X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2FCmsUserManager.java;h=2d64d9db02e2a6d4fdc06adc132894d2964098b2;hb=feddb4be70a8304dd4a533efee6e14c22691b500;hp=5256dbfed5901eb507e9ddaf8583edd1ab628b3f;hpb=4c7e1885b8bf3c93fa0919ace122e3f289a925ea;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 5256dbfed..2d64d9db0 100644 --- a/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java +++ b/org.argeo.cms/src/org/argeo/cms/CmsUserManager.java @@ -7,7 +7,11 @@ import java.util.Set; import javax.security.auth.Subject; -import org.argeo.osgi.useradmin.UserDirectory; +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.argeo.cms.auth.SystemRole; import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; @@ -17,52 +21,84 @@ import org.osgi.service.useradmin.User; * the userAdmin. */ public interface CmsUserManager { - public Map getKnownBaseDns(boolean onlyWritable); - public Set getUserDirectories(); - + Map getKnownBaseDns(boolean onlyWritable); + + Set getUserDirectories(); + // CurrentUser /** Returns the e-mail of the current logged in user */ - public String getMyMail(); + String getMyMail(); // Other users /** Returns a {@link User} given a username */ - public User getUser(String username); + CmsUser getUser(String username); /** Can be a group or a user */ - public String getUserDisplayName(String dn); + String getUserDisplayName(String dn); /** Can be a group or a user */ - public String getUserMail(String dn); + String getUserMail(String dn); /** Lists all roles of the given user */ - public String[] getUserRoles(String dn); + String[] getUserRoles(String dn); /** Checks if the passed user belongs to the passed role */ - public boolean isUserInRole(String userDn, String roleDn); + boolean isUserInRole(String userDn, String roleDn); // Search /** Returns a filtered list of roles */ - public Role[] getRoles(String filter) throws InvalidSyntaxException; + Role[] getRoles(String filter) throws InvalidSyntaxException; /** Recursively lists users in a given group. */ - public Set listUsersInGroup(String groupDn, String filter); + Set listUsersInGroup(String groupDn, String filter); /** Search among groups including system roles and users if needed */ - public 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. */ + 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, SystemRole 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 */ - public String buildDefaultDN(String localId, int type); + String buildDefaultDN(String localId, int type); /** Exposes the main default domain name for this instance */ - public String getDefaultDomainName(); + String getDefaultDomainName(); /** * Search for a {@link User} (might also be a group) whose uid or cn is equals * to localId within the various user repositories defined in the current * context. */ - public User getUserFromLocalId(String localId); + CmsUser getUserFromLocalId(String localId); void changeOwnPassword(char[] oldPassword, char[] newPassword); @@ -80,14 +116,9 @@ public interface CmsUserManager { void expireAuthToken(String token); void expireAuthTokens(Subject subject); - - UserDirectory getUserDirectory(User user); -// User createUserFromPerson(Node person); + UserDirectory getDirectory(Role role); -// @Deprecated -// public UserAdmin getUserAdmin(); -// -// @Deprecated -// public UserTransaction getUserTransaction(); + /** Create a new hierarchy unit. Does nothing if it already exists. */ + HierarchyUnit getOrCreateHierarchyUnit(UserDirectory directory, String path); } \ No newline at end of file