]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/nature/SimpleUserNature.java
Make security UI more robust
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / nature / SimpleUserNature.java
index da31bbae77b7eabf40b91f113158590e4eee1c75..a10ac4dbde9dcc002d95721c8d185ea3828fd5f1 100644 (file)
@@ -1,11 +1,38 @@
+/*
+ * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 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 UserNature {
+public class SimpleUserNature extends AbstractUserNature {
+       /**
+        * No PAI, for internal use within the Argeo Security framework. Will
+        * probably be removed.
+        */
+       public final static String TYPE = "simpleUser";
+
+       private static final long serialVersionUID = 1L;
        private String email;
        private String firstName;
        private String lastName;
+       private String description;
 
        public String getEmail() {
                return email;
@@ -31,4 +58,44 @@ public class SimpleUserNature extends UserNature {
                this.lastName = lastName;
        }
 
+       public String getDescription() {
+               return description;
+       }
+
+       public void setDescription(String description) {
+               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;
+       }
+
 }