Configuration and Auto-Certificates
[aaf/authz.git] / auth / auth-core / src / main / java / org / onap / aaf / auth / env / AuthzTransImpl.java
1 /**
2  * ============LICENSE_START====================================================
3  * org.onap.aaf
4  * ===========================================================================
5  * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6  * ===========================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END====================================================
19  *
20  */
21
22 package org.onap.aaf.auth.env;
23
24 import java.util.Date;
25
26 import javax.servlet.http.HttpServletRequest;
27
28 import org.onap.aaf.auth.org.Organization;
29 import org.onap.aaf.auth.org.OrganizationFactory;
30 import org.onap.aaf.cadi.Lur;
31 import org.onap.aaf.cadi.Permission;
32 import org.onap.aaf.cadi.principal.TaggedPrincipal;
33 import org.onap.aaf.misc.env.LogTarget;
34 import org.onap.aaf.misc.env.impl.BasicTrans;
35
36 public class AuthzTransImpl extends BasicTrans implements AuthzTrans {
37         private TaggedPrincipal user;
38         private String ip,agent,meth,path;
39         private int port;
40         private Lur lur;
41         private Organization org;
42         private int mask;
43         private Date now;
44         public AuthzTransImpl(AuthzEnv env) {
45                 super(env);
46                 ip="n/a";
47                 org=null;
48                 mask=0;
49         }
50
51         /**
52          * @see org.onap.aaf.auth.env.test.AuthTrans#set(javax.servlet.http.HttpServletRequest)
53          */
54         @Override
55         public AuthzTrans set(HttpServletRequest req) {
56                 user = (TaggedPrincipal)req.getUserPrincipal();
57                 ip = req.getRemoteAddr();
58                 port = req.getRemotePort();
59                 agent = req.getHeader("User-Agent");
60                 meth = req.getMethod();
61                 path = req.getPathInfo();
62                 
63                 for(REQD_TYPE rt : REQD_TYPE.values()) {
64                         requested(rt,req);
65                 }
66                 // Handle alternate "request" for "future"
67                 String request = req.getParameter("request");
68                 if(request!=null) {
69                         requested(REQD_TYPE.future,(request.length()==0 || "true".equalsIgnoreCase(request)));
70                 }
71
72                 org=null;
73                 return this;
74         }
75         
76         @Override
77         public void setUser(TaggedPrincipal p) {
78                 user = p;
79         }
80
81         /**
82          * @see org.onap.aaf.auth.env.test.AuthTrans#user()
83          */
84         @Override
85         public String user() {
86                 return user==null?"n/a":user.getName();
87         }
88         
89         /**
90          * @see org.onap.aaf.auth.env.test.AuthTrans#getUserPrincipal()
91          */
92         @Override
93         public TaggedPrincipal getUserPrincipal() {
94                 return user;
95         }
96
97         /**
98          * @see org.onap.aaf.auth.env.test.AuthTrans#ip()
99          */
100         @Override
101         public String ip() {
102                 return ip;
103         }
104
105         /**
106          * @see org.onap.aaf.auth.env.test.AuthTrans#port()
107          */
108         @Override
109         public int port() {
110                 return port;
111         }
112
113
114         /* (non-Javadoc)
115          * @see org.onap.aaf.auth.env.test.AuthzTrans#meth()
116          */
117         @Override
118         public String meth() {
119                 return meth;
120         }
121
122         /* (non-Javadoc)
123          * @see org.onap.aaf.auth.env.test.AuthzTrans#path()
124          */
125         @Override
126         public String path() {
127                 return path;
128         }
129
130         /**
131          * @see org.onap.aaf.auth.env.test.AuthTrans#agent()
132          */
133         @Override
134         public String agent() {
135                 return agent;
136         }
137
138         @Override
139         public AuthzEnv env() {
140                 return (AuthzEnv)delegate;
141         }
142         
143         @Override
144         public boolean requested(REQD_TYPE requested) {
145                 return (mask&requested.bit)==requested.bit;
146         }
147         
148         public void requested(REQD_TYPE requested, boolean b) {
149                 if(b) {
150                         mask|=requested.bit;
151                 } else {
152                         mask&=~requested.bit;
153                 }
154         }
155         
156         private void requested(REQD_TYPE reqtype, HttpServletRequest req) {
157                 String p = req.getParameter(reqtype.name());
158                 if(p!=null) {
159                         requested(reqtype,p.length()==0 || "true".equalsIgnoreCase(p));
160                 }
161         }
162
163         @Override
164         public void setLur(Lur lur) {
165                 this.lur = lur;
166         }
167         
168         @Override
169         public boolean fish(Permission ... pond) {
170                 if(lur!=null) {
171                         return lur.fish(user, pond);
172                 }
173                 return false;
174         }
175
176         /* (non-Javadoc)
177          * @see org.onap.aaf.auth.env.test.AuthzTrans#org()
178          */
179         @Override
180         public Organization org() {
181                 if(org==null) {
182                         try {
183                                 if((org = OrganizationFactory.obtain(env(), user()))==null) {
184                                         org = Organization.NULL;
185                                 }
186                         } catch (Exception e) {
187                                 
188                                 org = Organization.NULL;
189                         }
190                 } 
191                 return org;
192         }
193
194         /* (non-Javadoc)
195          * @see org.onap.aaf.auth.env.test.AuthzTrans#logAuditTrailOnly(com.att.inno.env.LogTarget)
196          */
197         @Override
198         public void logAuditTrail(LogTarget lt) {
199                 if(lt.isLoggable()) {
200                         StringBuilder sb = new StringBuilder();
201                         auditTrail(1, sb);
202                         lt.log(sb);
203                 }
204         }
205
206         /* (non-Javadoc)
207          * @see org.onap.aaf.auth.env.test.AuthzTrans#now()
208          */
209         @Override
210         public Date now() {
211                 if(now==null) {
212                         now = new Date();
213                 }
214                 return now;
215         }
216 }