Improve user management
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / CmsUserManager.java
index 040138878603fc1f0cade62ef1cd00be7d58a471..4017c7ebf3b56a18f8bffca4ec0888cb9ffa9734 100644 (file)
@@ -7,9 +7,11 @@ import java.util.Set;
 
 import javax.security.auth.Subject;
 
+import org.argeo.cms.auth.SystemRole;
 import org.argeo.osgi.useradmin.UserDirectory;
 import org.argeo.util.directory.HierarchyUnit;
 import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.service.useradmin.Group;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.User;
 
@@ -55,9 +57,21 @@ public interface CmsUserManager {
        /*
         * EDITION
         */
-       /** Creates a new user.*/
+       /** Creates a new user. */
        User createUser(String username, Map<String, Object> properties, Map<String, Object> credentials);
 
+       /** Creates a group. */
+       Group getOrCreateGroup(HierarchyUnit groups, String commonName);
+
+       /** Creates a new system role. */
+       Group getOrCreateSystemRole(HierarchyUnit roles, SystemRole systemRole);
+
+       /** Add additional object classes to this role. */
+       void addObjectClasses(Role role, Set<String> objectClasses, Map<String, Object> additionalProperties);
+
+       /** Add a member to this group. */
+       void addMember(Group group, Role role);
+
        /* MISCELLANEOUS */
        /** Returns the dn of a role given its local ID */
        String buildDefaultDN(String localId, int type);
@@ -92,5 +106,5 @@ public interface CmsUserManager {
        UserDirectory getDirectory(Role role);
 
        /** Create a new hierarchy unit. Does nothing if it already exists. */
-       HierarchyUnit createHierarchyUnit(UserDirectory directory, String path);
+       HierarchyUnit getOrCreateHierarchyUnit(UserDirectory directory, String path);
 }
\ No newline at end of file