X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FCmsUserManager.java;h=f87d28b1c3a8729c1b84ca2dbbe75be07cc40ea7;hb=e018ad9078249a806f2e2ef86a6adcbd8cca3188;hp=040138878603fc1f0cade62ef1cd00be7d58a471;hpb=4012bedd8870634488b307d2233590fb1226e5d4;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java b/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java index 040138878..f87d28b1c 100644 --- a/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java +++ b/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java @@ -6,9 +6,12 @@ import java.util.Map; import java.util.Set; import javax.security.auth.Subject; +import javax.xml.namespace.QName; -import org.argeo.osgi.useradmin.UserDirectory; -import org.argeo.util.directory.HierarchyUnit; +import org.argeo.api.cms.directory.CmsGroup; +import org.argeo.api.cms.directory.CmsUser; +import org.argeo.api.cms.directory.HierarchyUnit; +import org.argeo.api.cms.directory.UserDirectory; import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; @@ -28,7 +31,7 @@ public interface CmsUserManager { // Other users /** Returns a {@link User} given a username */ - User getUser(String username); + CmsUser getUser(String username); /** Can be a group or a user */ String getUserDisplayName(String dn); @@ -47,16 +50,41 @@ public interface CmsUserManager { Role[] getRoles(String filter) throws InvalidSyntaxException; /** Recursively lists users in a given group. */ - Set listUsersInGroup(String groupDn, String filter); + Set listUsersInGroup(String groupDn, String filter); /** Search among groups including system roles and users if needed */ - List listGroups(String filter, boolean includeUsers, boolean includeSystemRoles); + List listGroups(String filter, boolean includeUsers, boolean includeSystemRoles); + +// /** +// * Lists functional accounts, that is users with regular access to the system +// * under this functional hierarchy unit (which probably have technical direct +// * sub hierarchy units), excluding groups which are not explicitly users. +// */ +// Set listAccounts(HierarchyUnit hierarchyUnit, boolean deep); /* * EDITION */ - /** Creates a new user.*/ - User createUser(String username, Map properties, Map credentials); + /** Creates a new user. */ + CmsUser createUser(String username, Map properties, Map credentials); + + /** Creates a group. */ + CmsGroup getOrCreateGroup(HierarchyUnit groups, String commonName); + + /** Creates a new system role. */ + CmsGroup getOrCreateSystemRole(HierarchyUnit roles, QName systemRole); + + /** Add additional object classes to this role. */ + void addObjectClasses(Role role, Set objectClasses, Map additionalProperties); + + /** Add additional object classes to this hierarchy unit. */ + void addObjectClasses(HierarchyUnit hierarchyUnit, Set objectClasses, + Map additionalProperties); + + /** Add a member to this group. */ + void addMember(CmsGroup group, Role role); + + void edit(Runnable action); /* MISCELLANEOUS */ /** Returns the dn of a role given its local ID */ @@ -70,7 +98,7 @@ public interface CmsUserManager { * to localId within the various user repositories defined in the current * context. */ - User getUserFromLocalId(String localId); + CmsUser getUserFromLocalId(String localId); void changeOwnPassword(char[] oldPassword, char[] newPassword); @@ -92,5 +120,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