View Javadoc

1   /**
2    * 2007, Digitalis Informatica. All rights reserved. Distribuicao e Gestao de Informatica, Lda. Estrada de Paco de Arcos
3    * num.9 - Piso -1 2780-666 Paco de Arcos Telefone: (351) 21 4408990 Fax: (351) 21 4408999 http://www.digitalis.pt
4    */
5   package pt.digitalis.dif.controller.objects;
6   
7   import java.util.ArrayList;
8   import java.util.List;
9   import java.util.Map;
10  import java.util.Set;
11  
12  import pt.digitalis.dif.controller.security.managers.IIdentityManager;
13  import pt.digitalis.dif.controller.security.objects.IDIFGroup;
14  import pt.digitalis.dif.controller.security.objects.IDIFInternalUser;
15  import pt.digitalis.dif.controller.security.objects.IDIFUser;
16  import pt.digitalis.dif.dem.Entity;
17  import pt.digitalis.dif.dem.interfaces.IStage;
18  import pt.digitalis.dif.exception.InternalFrameworkException;
19  import pt.digitalis.dif.exception.security.IdentityManagerException;
20  import pt.digitalis.dif.utils.ObjectFormatter;
21  import pt.digitalis.utils.common.collections.CaseInsensitiveHashMap;
22  
23  /**
24   * Represents a IDIFUser in session after a successful login. This class contains a IDIFUser and the password that was
25   * used by the user to login
26   * 
27   * @author Pedro Viegas <a href="mailto:pviegas@digitalis.pt">pviegas@digitalis.pt</a>
28   * @author Rodrigo Gon�alves <a href="mailto:rgoncalves@digitalis.pt">rgoncalves@digitalis.pt</a><br/>
29   * @created Mar 25, 2008
30   */
31  public class DIFUserInSession implements IDIFInternalUser {
32  
33      /** User attributes to remove. */
34      private List<String> attributesToRemove = new ArrayList<String>();
35  
36      /** Is "default user"? */
37      private boolean isDefault;
38  
39      /** the password used to login */
40      private String password;
41  
42      /** The real user that was obtained from the {@link IIdentityManager} */
43      private IDIFUser user;
44  
45      /**
46       * @param user
47       *            the IDIFUser
48       * @param password
49       *            the password used to login
50       */
51      public DIFUserInSession(IDIFUser user, String password)
52      {
53          this.user = user;
54          this.password = password;
55      }
56  
57      /**
58       * @see pt.digitalis.dif.controller.security.objects.IDIFUser#addTempGroup(java.lang.String)
59       */
60      public void addTempGroup(String groupId)
61      {
62          user.addTempGroup(groupId);
63      }
64  
65      /**
66       * @see pt.digitalis.dif.controller.security.objects.IUserAuthorization#canAccess(pt.digitalis.dif.dem.Entity,
67       *      java.lang.String)
68       */
69      public boolean canAccess(Entity resourceType, String resourceId)
70      {
71          return user.canAccess(resourceType, resourceId);
72      }
73  
74      /**
75       * @see pt.digitalis.dif.controller.security.objects.IUserAuthorization#canAccess(pt.digitalis.dif.dem.interfaces.IStage)
76       */
77      public boolean canAccess(IStage stage)
78      {
79          return user.canAccess(stage);
80      }
81  
82      /**
83       * @see pt.digitalis.dif.controller.security.objects.IDIFUser#cleanCache()
84       */
85      public void cleanCache()
86      {
87          user.cleanCache();
88      }
89  
90      /**
91       * @see pt.digitalis.dif.controller.security.objects.IDIFUser#containsAttribute(java.lang.String)
92       */
93      public boolean containsAttribute(String id)
94      {
95          return user.containsAttribute(id);
96      }
97  
98      /**
99       * @see pt.digitalis.dif.controller.security.objects.IDIFUser#containsParameter(java.lang.String)
100      */
101     public boolean containsParameter(String id)
102     {
103         return user.containsParameter(id);
104     }
105 
106     /**
107      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getAttribute(java.lang.String)
108      */
109     public Object getAttribute(String id)
110     {
111         return user.getAttribute(id);
112     }
113 
114     /**
115      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getAttributes()
116      */
117     public CaseInsensitiveHashMap<Object> getAttributes()
118     {
119         return user.getAttributes();
120     }
121 
122     /**
123      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getAttributesToRemove()
124      */
125     public List<String> getAttributesToRemove()
126     {
127         return attributesToRemove;
128     }
129 
130     /**
131      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getEmail()
132      */
133     public String getEmail()
134     {
135         return user.getEmail();
136     }
137 
138     /**
139      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getGroupIDs()
140      */
141     public Set<String> getGroupIDs() throws IdentityManagerException
142     {
143         return user.getGroupIDs();
144     }
145 
146     /**
147      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getGroups()
148      */
149     public Map<String, IDIFGroup> getGroups() throws IdentityManagerException
150     {
151         return user.getGroups();
152     }
153 
154     /**
155      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getID()
156      */
157     public String getID()
158     {
159         return user.getID();
160     }
161 
162     /**
163      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getName()
164      */
165     public String getName()
166     {
167         return user.getName();
168     }
169 
170     /**
171      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getNick()
172      */
173     public String getNick()
174     {
175         return user.getNick();
176     }
177 
178     /**
179      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getParameter(java.lang.String)
180      */
181     public Object getParameter(String id)
182     {
183         return user.getParameter(id);
184     }
185 
186     /**
187      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getParameters()
188      */
189     public Map<String, Object> getParameters()
190     {
191         return user.getParameters();
192     }
193 
194     /**
195      * @see pt.digitalis.dif.controller.security.objects.IDIFInternalUser#getPassword()
196      */
197     public String getPassword()
198     {
199         return this.password;
200     }
201 
202     /**
203      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getProfile()
204      */
205     public IDIFGroup getProfile() throws IdentityManagerException
206     {
207         return user.getProfile();
208     }
209 
210     /**
211      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#getProfileID()
212      */
213     public String getProfileID() throws IdentityManagerException
214     {
215         return user.getProfileID();
216     }
217 
218     /**
219      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#initializeAttributes(java.util.Map)
220      */
221     public void initializeAttributes(Map<String, Object> attrs)
222     {
223         user.initializeAttributes(attrs);
224     }
225 
226     /**
227      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#isDefault()
228      */
229     public boolean isDefault()
230     {
231         return this.isDefault;
232     }
233 
234     /**
235      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#isEnabled()
236      */
237     public boolean isEnabled()
238     {
239         return user.isEnabled();
240     }
241 
242     /**
243      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#refresh()
244      */
245     public void refresh()
246     {
247         user.refresh();
248     }
249 
250     /**
251      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#removeAttribute(java.lang.String)
252      */
253     public void removeAttribute(String id)
254     {
255         user.removeAttribute(id);
256         attributesToRemove.add(id);
257     }
258 
259     /**
260      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#removeParameter(java.lang.String)
261      */
262     public void removeParameter(String id)
263     {
264         user.removeParameter(id);
265     }
266 
267     /**
268      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#removeTempGroup(java.lang.String)
269      */
270     public void removeTempGroup(String groupId)
271     {
272         user.removeTempGroup(groupId);
273     }
274 
275     /**
276      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setAttribute(java.lang.String, java.lang.Object)
277      */
278     public void setAttribute(String id, Object attribute) throws InternalFrameworkException
279     {
280         user.setAttribute(id, attribute);
281     }
282 
283     /**
284      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setAttributes(java.util.Map)
285      */
286     public void setAttributes(Map<String, Object> attributes) throws InternalFrameworkException
287     {
288         this.user.setAttributes(attributes);
289     }
290 
291     /**
292      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setDefault(boolean)
293      */
294     public void setDefault(boolean isDefault)
295     {
296         this.isDefault = isDefault;
297     }
298 
299     /**
300      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setEmail(java.lang.String)
301      */
302     public void setEmail(String email)
303     {
304         user.setEmail(email);
305     }
306 
307     /**
308      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setEnabled(boolean)
309      */
310     public void setEnabled(boolean enabled)
311     {
312         user.setEnabled(enabled);
313     }
314 
315     /**
316      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setID(java.lang.String)
317      */
318     public void setID(String id)
319     {
320         user.setID(id);
321     }
322 
323     /**
324      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setName(java.lang.String)
325      */
326     public void setName(String name)
327     {
328         user.setName(name);
329     }
330 
331     /**
332      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setNick(java.lang.String)
333      */
334     public void setNick(String nick)
335     {
336         user.setNick(nick);
337     }
338 
339     /**
340      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setParameter(java.lang.String, java.lang.Object)
341      */
342     public void setParameter(String id, Object parameter)
343     {
344         user.setParameter(id, parameter);
345     }
346 
347     /**
348      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setParameters(java.util.Map)
349      */
350     public void setParameters(Map<String, Object> parameters)
351     {
352         this.user.setParameters(parameters);
353     }
354 
355     /**
356      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setPassword(java.lang.String)
357      */
358     public void setPassword(String password)
359     {
360         user.setPassword(password);
361         this.password = password;
362     }
363 
364     /**
365      * @see pt.digitalis.dif.controller.security.objects.IDIFUser#setProfileID(java.lang.String)
366      */
367     public void setProfileID(String profileGroupID)
368     {
369         user.setProfileID(profileGroupID);
370     }
371 
372     /**
373      * @see java.lang.Object#toString()
374      */
375     @Override
376     public String toString()
377     {
378         ObjectFormatter formatter = new ObjectFormatter();
379 
380         formatter.addItem("ID", getID());
381         formatter.addItemIfNotNull("Name", getName());
382         formatter.addItemIfNotNull("Password", "*****");
383         formatter.addItemIfNotNull("Nick", getNick());
384         formatter.addItemIfNotNull("Email", getEmail());
385         formatter.addItem("Enabled", isEnabled());
386         formatter.addItemIfNotNull("Attributes", this.getAttributes());
387         formatter.addItemIfNotNull("Parameters", this.getParameters());
388 
389         try
390         {
391             IDIFGroup profile = getProfile();
392             formatter.addItem("Profile", profile);
393         }
394         catch (IdentityManagerException identityManagerException)
395         {
396             throw new RuntimeException("Could not access the user's profile on the identity manager!",
397                     identityManagerException);
398         }
399 
400         try
401         {
402             Map<String, IDIFGroup> groups = getGroups();
403             formatter.addItemIfNotNull("Groups", groups);
404         }
405         catch (IdentityManagerException identityManagerException)
406         {
407             throw new RuntimeException("Could not access the user's groups on the identity manager!",
408                     identityManagerException);
409         }
410 
411         return formatter.getFormatedObject();
412     }
413 }