Improve Security
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / nature / SimpleUserNature.java
index 7d7723e33f599df7c320e42b80a3e50750e8814c..a10ac4dbde9dcc002d95721c8d185ea3828fd5f1 100644 (file)
 
 package org.argeo.security.nature;
 
+import org.argeo.ArgeoException;
 import org.argeo.security.AbstractUserNature;
+import org.argeo.security.ArgeoUser;
+import org.argeo.security.UserNature;
 
 public class SimpleUserNature extends AbstractUserNature {
        /**
@@ -63,4 +66,36 @@ public class SimpleUserNature extends AbstractUserNature {
                this.description = description;
        }
 
+       /*
+        * SECURITY UTILITIES
+        */
+       /**
+        * Finds a user nature extending {@link SimpleUserNature} in the provided
+        * user.
+        * 
+        * @param user
+        *            the user to scan
+        * @param simpleNatureType
+        *            the type under which a {@link SimpleUserNature} is registered,
+        *            useful if there are many. can be null.
+        * @return the {@link SimpleUserNature}
+        * @throws ArgeoException
+        *             if no simple user nature was found
+        */
+       public final static SimpleUserNature findSimpleUserNature(ArgeoUser user,
+                       String simpleNatureType) {
+               SimpleUserNature simpleNature = null;
+               if (simpleNatureType != null)
+                       simpleNature = (SimpleUserNature) user.getUserNatures().get(
+                                       simpleNatureType);
+               else
+                       for (UserNature userNature : user.getUserNatures().values())
+                               if (userNature instanceof SimpleUserNature)
+                                       simpleNature = (SimpleUserNature) userNature;
+
+               if (simpleNature == null)
+                       throw new ArgeoException("No simple user nature in user " + user);
+               return simpleNature;
+       }
+
 }