Class ProjectMemberManager
- java.lang.Object
-
- org.ametys.runtime.plugin.component.AbstractLogEnabled
-
- org.ametys.plugins.workspaces.members.ProjectMemberManager
-
- All Implemented Interfaces:
LogEnabled
,Component
,Contextualizable
,Serviceable
public class ProjectMemberManager extends AbstractLogEnabled implements Serviceable, Component, Contextualizable
Helper component for managing project's users
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ProjectMemberManager.ProjectMember
This class represents a member of a project.
-
Field Summary
Fields Modifier and Type Field Description private static String
__PROJECT_MEMBER_NODE_TYPE
The type of a project user node typeprivate static String
__PROJECT_MEMBERS_NODE
Constants for users project nodeprivate static String
__PROJECT_MEMBERS_NODE_TYPE
The type of the project users node typeprivate static String
__PROJECT_RIGHT_PROFILE
static String
__WORKSPACES_SERVICE_MEMBERS
The id of the members serviceprotected Context
_context
Avalon contextprotected CurrentUserProvider
_currentUserProvider
Current user providerprotected GroupDirectoryContextHelper
_groupDirectoryContextHelper
The group directory context helperprotected GroupManager
_groupManager
The groups managerprotected LanguagesManager
_languagesManager
The language managerprotected WorkspaceModuleExtensionPoint
_moduleManagerEP
Module managers EPprotected ObservationManager
_observationManager
The observation managerprotected PopulationContextHelper
_populationContextHelper
The population context helperprotected ProfileAssignmentStorageExtensionPoint
_profileAssignmentStorageExtensionPoint
Profile assignment storageprotected ProjectInvitationHelper
_projectInvitationHelper
The project invitation helperprotected ProjectManager
_projectManager
Project managerprotected ProjectRightHelper
_projectRightHelper
Project rights helperprotected AmetysObjectResolver
_resolver
Ametys object resolverprotected RightManager
_rightManager
Rights managerprotected RightProfilesDAO
_rightProfilesDAO
Profiles right managerprotected URIResolverExtensionPoint
_uriResolver
The page URI resolver.protected UserDirectoryHelper
_userDirectoryHelper
The user directory helperprotected UserDirectoryPageResolver
_userDirectoryPageResolver
The resolver for user directory pagesprotected UserHelper
_userHelper
The user helperprotected UserManager
_userManager
Users managerstatic String
ROLE
Avalon Role
-
Constructor Summary
Constructors Constructor Description ProjectMemberManager()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
_addProfile(JCRProjectMember member, String profileId, AmetysObject aclObject)
private Set<String>
_getAllowedProfile(JCRProjectMember member, AmetysObject object)
private String
_getAllowedProfileOnModule(Project project, WorkspaceModule module, JCRProjectMember member)
protected Map<String,String>
_getDefaultProfilesByModule()
Get a map of each available module, with the default profileprivate Map<String,String>
_getMemberProfiles(JCRProjectMember member, Project project)
protected JCRProjectMember
_getOrCreateProjectMember(Project project, Predicate<? super AmetysObject> findMemberPredicate)
Retrieve or create a member in a projectprivate JCRProjectMember
_getProjectMember(Project project, GroupIdentity group)
private JCRProjectMember
_getProjectMember(Project project, UserIdentity user)
protected Map<JCRProjectMember,Object>
_getProjectMembers(Project project)
Get the list of users of the projectprotected ModifiableTraversableAmetysObject
_getProjectMembersNode(Project project)
Retrieves the users node of the project The users node will be created if necessaryprivate Content
_getUserContent(String lang, User user)
private boolean
_isCurrentUser(boolean isTypeUser, UserIdentity user)
private boolean
_isOnlyManager(Project project, boolean isTypeUser, UserIdentity user)
private void
_notifyAclUpdated(UserIdentity userIdentity, AmetysObject aclContext, Collection<String> aclProfiles)
private void
_removeManager(Project project, boolean isTypeUser, UserIdentity user)
private void
_removeMemberProfiles(JCRProjectMember member, AmetysObject object)
private void
_removeMemberProfiles(Project project, JCRProjectMember projectMember)
private void
_removeProfile(JCRProjectMember member, String profileId, AmetysObject aclObject)
private void
_setMemberProfiles(JCRProjectMember member, Set<String> allowedProfiles, AmetysObject object)
private void
_setProfileOnModule(JCRProjectMember member, Project project, WorkspaceModule module, Set<String> allowedProfiles)
Map<String,Object>
addMember(String projectName, String identity, String type)
Add a new memberMap<String,Object>
addMembers(String projectName, List<Map<String,String>> newMembers, List<String> invitEmails)
Add new members and invitation by emailboolean
addProjectMember(Project project, UserIdentity user)
Add a user to a project with open inscriptions, using the default valuesvoid
contextualize(Context context)
Map<String,Object>
getCurrentUser()
Get the current user informationList<User>
getGroupUsersFromProject(Group group, Project project, BiPredicate<Project,UserIdentity> filteringPredicate)
Get the users from a group that are part of the project.Map<String,Object>
getMemberModuleRights(String projectName)
Retrieves the rights for the current user in the projectLong
getMembersCount(Project project)
Count the total of unique users in the project and in the project's groupJCRProjectMember
getOrCreateProjectMember(Project project, GroupIdentity groupIdentity)
Retrieve or create a group as a member in a projectJCRProjectMember
getOrCreateProjectMember(Project project, UserIdentity userIdentity)
Retrieve or create a user in a projectProjectMemberManager.ProjectMember
getProjectMember(Project project, UserIdentity userIdentity)
Retrieve the member of a project corresponding to the user identityProjectMemberManager.ProjectMember
getProjectMember(Project project, UserIdentity userIdentity, Set<GroupIdentity> userGroups)
Retrieve the member of a project corresponding to the user identityMap<String,Object>
getProjectMemberData(String projectName, String identity, String type)
Retrieve the data of a member of a project, or the default data if no user is providedMap<String,Object>
getProjectMembers()
Get the members of current project or all the members of all projects in where is no current projectMap<String,Object>
getProjectMembers(String projectName, String lang)
Get the members of a project, sorted by managers, non empty role and nameCollection<ProjectMemberManager.ProjectMember>
getProjectMembers(Project project, boolean expandGroup, boolean sortList)
Get the members of a project, sorted by managers, non empty role and nameprotected Map<String,Object>
group2Json(Group group)
Get the JSON representation of a groupboolean
isProjectMember(Project project, UserIdentity userIdentity)
Test if an user is a member of a project (directly or by a group)Map<String,Object>
removeMember(String projectName, String identity, String type)
Remove a user from a projectvoid
service(ServiceManager manager)
void
setMemberProfiles(Map<String,String> newProfiles, JCRProjectMember projectMember, Project project, boolean newMember)
Set the profiles for a membervoid
setProjectManager(String projectName, String profileId, List<UserIdentity> managers)
Set the manager of a projectMap<String,Object>
setProjectMemberData(String projectName, String identity, String type, Map<String,String> newProfiles, String role)
Set the user data in the project-
Methods inherited from class org.ametys.runtime.plugin.component.AbstractLogEnabled
getLogger, setLogger
-
-
-
-
Field Detail
-
__WORKSPACES_SERVICE_MEMBERS
public static final String __WORKSPACES_SERVICE_MEMBERS
The id of the members service- See Also:
- Constant Field Values
-
__PROJECT_RIGHT_PROFILE
@Obsolete private static final String __PROJECT_RIGHT_PROFILE
- See Also:
- Constant Field Values
-
__PROJECT_MEMBERS_NODE
private static final String __PROJECT_MEMBERS_NODE
Constants for users project node- See Also:
- Constant Field Values
-
__PROJECT_MEMBERS_NODE_TYPE
private static final String __PROJECT_MEMBERS_NODE_TYPE
The type of the project users node type- See Also:
- Constant Field Values
-
__PROJECT_MEMBER_NODE_TYPE
private static final String __PROJECT_MEMBER_NODE_TYPE
The type of a project user node type- See Also:
- Constant Field Values
-
_projectManager
protected ProjectManager _projectManager
Project manager
-
_projectRightHelper
protected ProjectRightHelper _projectRightHelper
Project rights helper
-
_rightProfilesDAO
protected RightProfilesDAO _rightProfilesDAO
Profiles right manager
-
_profileAssignmentStorageExtensionPoint
protected ProfileAssignmentStorageExtensionPoint _profileAssignmentStorageExtensionPoint
Profile assignment storage
-
_resolver
protected AmetysObjectResolver _resolver
Ametys object resolver
-
_rightManager
protected RightManager _rightManager
Rights manager
-
_currentUserProvider
protected CurrentUserProvider _currentUserProvider
Current user provider
-
_userManager
protected UserManager _userManager
Users manager
-
_observationManager
protected ObservationManager _observationManager
The observation manager
-
_moduleManagerEP
protected WorkspaceModuleExtensionPoint _moduleManagerEP
Module managers EP
-
_userHelper
protected UserHelper _userHelper
The user helper
-
_groupManager
protected GroupManager _groupManager
The groups manager
-
_populationContextHelper
protected PopulationContextHelper _populationContextHelper
The population context helper
-
_userDirectoryHelper
protected UserDirectoryHelper _userDirectoryHelper
The user directory helper
-
_projectInvitationHelper
protected ProjectInvitationHelper _projectInvitationHelper
The project invitation helper
-
_languagesManager
protected LanguagesManager _languagesManager
The language manager
-
_userDirectoryPageResolver
protected UserDirectoryPageResolver _userDirectoryPageResolver
The resolver for user directory pages
-
_uriResolver
protected URIResolverExtensionPoint _uriResolver
The page URI resolver.
-
_groupDirectoryContextHelper
protected GroupDirectoryContextHelper _groupDirectoryContextHelper
The group directory context helper
-
-
Constructor Detail
-
ProjectMemberManager
public ProjectMemberManager()
-
-
Method Detail
-
contextualize
public void contextualize(Context context) throws ContextException
- Specified by:
contextualize
in interfaceContextualizable
- Throws:
ContextException
-
service
public void service(ServiceManager manager) throws ServiceException
- Specified by:
service
in interfaceServiceable
- Throws:
ServiceException
-
getProjectMemberData
public Map<String,Object> getProjectMemberData(String projectName, String identity, String type) throws IllegalAccessException
Retrieve the data of a member of a project, or the default data if no user is provided- Parameters:
projectName
- The name of the projectidentity
- The user or group identity. If null, return the default profiles for a new usertype
- The type of the identity. Can be "user" or "group"- Returns:
- The map of profiles per module for the user
- Throws:
IllegalAccessException
- If the user cannot execute this operation
-
_getMemberProfiles
private Map<String,String> _getMemberProfiles(JCRProjectMember member, Project project)
-
_getAllowedProfileOnModule
private String _getAllowedProfileOnModule(Project project, WorkspaceModule module, JCRProjectMember member)
-
addMembers
public Map<String,Object> addMembers(String projectName, List<Map<String,String>> newMembers, List<String> invitEmails) throws IllegalAccessException
Add new members and invitation by email- Parameters:
projectName
- The project namenewMembers
- The members to add (users or groups)invitEmails
- The invitation emails- Returns:
- the result with errors
- Throws:
IllegalAccessException
- If the user cannot execute this operation
-
addMember
public Map<String,Object> addMember(String projectName, String identity, String type) throws IllegalAccessException
Add a new member- Parameters:
projectName
- The project nameidentity
- The user or group identity.type
- The type of the identity. Can be "user" or "group"- Returns:
- the result
- Throws:
IllegalAccessException
- If the user cannot execute this operation
-
_getDefaultProfilesByModule
protected Map<String,String> _getDefaultProfilesByModule()
Get a map of each available module, with the default profile- Returns:
- A map with moduleId : profileId
-
setProjectMemberData
public Map<String,Object> setProjectMemberData(String projectName, String identity, String type, Map<String,String> newProfiles, String role) throws IllegalAccessException
Set the user data in the project- Parameters:
projectName
- The project nameidentity
- The user or group identity.type
- The type of the identity. Can be "user" or "group"newProfiles
- The profiles to affect, mapped by modulerole
- The user role inside the project- Returns:
- The result
- Throws:
IllegalAccessException
- If the user cannot execute this operation
-
addProjectMember
public boolean addProjectMember(Project project, UserIdentity user)
Add a user to a project with open inscriptions, using the default values- Parameters:
project
- The projectuser
- The user- Returns:
- True if the user was successfully added
-
setMemberProfiles
public void setMemberProfiles(Map<String,String> newProfiles, JCRProjectMember projectMember, Project project, boolean newMember)
Set the profiles for a member- Parameters:
newProfiles
- The allowed profile by moduleprojectMember
- The memberproject
- The projectnewMember
- true if it is a new created member
-
_setProfileOnModule
private void _setProfileOnModule(JCRProjectMember member, Project project, WorkspaceModule module, Set<String> allowedProfiles)
-
_getAllowedProfile
private Set<String> _getAllowedProfile(JCRProjectMember member, AmetysObject object)
-
_setMemberProfiles
private void _setMemberProfiles(JCRProjectMember member, Set<String> allowedProfiles, AmetysObject object)
-
_removeProfile
private void _removeProfile(JCRProjectMember member, String profileId, AmetysObject aclObject)
-
_addProfile
private void _addProfile(JCRProjectMember member, String profileId, AmetysObject aclObject)
-
_removeMemberProfiles
private void _removeMemberProfiles(JCRProjectMember member, AmetysObject object)
-
getCurrentUser
public Map<String,Object> getCurrentUser()
Get the current user information- Returns:
- The user
-
getProjectMembers
public Map<String,Object> getProjectMembers()
Get the members of current project or all the members of all projects in where is no current project- Returns:
- The members
-
getProjectMembers
public Map<String,Object> getProjectMembers(String projectName, String lang) throws IllegalAccessException, AmetysRepositoryException
Get the members of a project, sorted by managers, non empty role and name- Parameters:
projectName
- the project's namelang
- the language to get user content- Returns:
- the members of project
- Throws:
IllegalAccessException
- if an error occurredAmetysRepositoryException
- if an error occurred
-
_getUserContent
private Content _getUserContent(String lang, User user)
-
getProjectMembers
public Collection<ProjectMemberManager.ProjectMember> getProjectMembers(Project project, boolean expandGroup, boolean sortList) throws AmetysRepositoryException
Get the members of a project, sorted by managers, non empty role and name- Parameters:
project
- the projectexpandGroup
- true to expand the user of a groupsortList
- true to sort the list by manager, role and name- Returns:
- the members of project
- Throws:
AmetysRepositoryException
- if an error occurred
-
getMemberModuleRights
public Map<String,Object> getMemberModuleRights(String projectName)
Retrieves the rights for the current user in the project- Parameters:
projectName
- The project Name- Returns:
- The project
-
_getProjectMembers
protected Map<JCRProjectMember,Object> _getProjectMembers(Project project)
Get the list of users of the project- Parameters:
project
- The project- Returns:
- The list of users
-
isProjectMember
public boolean isProjectMember(Project project, UserIdentity userIdentity)
Test if an user is a member of a project (directly or by a group)- Parameters:
project
- The projectuserIdentity
- The user identity- Returns:
- True if this user is a member of this project
-
getProjectMember
public ProjectMemberManager.ProjectMember getProjectMember(Project project, UserIdentity userIdentity)
Retrieve the member of a project corresponding to the user identity- Parameters:
project
- The projectuserIdentity
- The user identity- Returns:
- The member of this project, which can be of type "user" or "group", or null if the user is not in the project
-
getProjectMember
public ProjectMemberManager.ProjectMember getProjectMember(Project project, UserIdentity userIdentity, Set<GroupIdentity> userGroups)
Retrieve the member of a project corresponding to the user identity- Parameters:
project
- The projectuserIdentity
- The user identityuserGroups
- The user groups. If null the user's groups will be expanded.- Returns:
- The member of this project, which can be of type "user" or "group", or null if the user is not in the project
-
setProjectManager
public void setProjectManager(String projectName, String profileId, List<UserIdentity> managers)
Set the manager of a project- Parameters:
projectName
- The project nameprofileId
- The profile id to affectmanagers
- The managers' user identity
-
_notifyAclUpdated
private void _notifyAclUpdated(UserIdentity userIdentity, AmetysObject aclContext, Collection<String> aclProfiles)
-
getOrCreateProjectMember
public JCRProjectMember getOrCreateProjectMember(Project project, UserIdentity userIdentity)
Retrieve or create a user in a project- Parameters:
project
- The projectuserIdentity
- the user- Returns:
- The user
-
getOrCreateProjectMember
public JCRProjectMember getOrCreateProjectMember(Project project, GroupIdentity groupIdentity)
Retrieve or create a group as a member in a project- Parameters:
project
- The projectgroupIdentity
- the group- Returns:
- The user
-
_getOrCreateProjectMember
protected JCRProjectMember _getOrCreateProjectMember(Project project, Predicate<? super AmetysObject> findMemberPredicate)
Retrieve or create a member in a project- Parameters:
project
- The projectfindMemberPredicate
- The predicate to find the member node- Returns:
- The member node. A new node is created if the member node was not found
-
removeMember
public Map<String,Object> removeMember(String projectName, String identity, String type) throws IllegalAccessException
Remove a user from a project- Parameters:
projectName
- The project nameidentity
- The identity of the user or group, who must be a member of the projecttype
- The type of the member, user or group- Returns:
- The error code, if an error occurred
- Throws:
IllegalAccessException
- If the user cannot execute this operation
-
_isCurrentUser
private boolean _isCurrentUser(boolean isTypeUser, UserIdentity user)
-
_isOnlyManager
private boolean _isOnlyManager(Project project, boolean isTypeUser, UserIdentity user)
-
_getProjectMember
private JCRProjectMember _getProjectMember(Project project, GroupIdentity group)
-
_getProjectMember
private JCRProjectMember _getProjectMember(Project project, UserIdentity user)
-
_removeManager
private void _removeManager(Project project, boolean isTypeUser, UserIdentity user)
-
_removeMemberProfiles
private void _removeMemberProfiles(Project project, JCRProjectMember projectMember)
-
_getProjectMembersNode
protected ModifiableTraversableAmetysObject _getProjectMembersNode(Project project)
Retrieves the users node of the project The users node will be created if necessary- Parameters:
project
- The project- Returns:
- The users node of the project
-
group2Json
protected Map<String,Object> group2Json(Group group)
Get the JSON representation of a group- Parameters:
group
- The group- Returns:
- The group
-
getMembersCount
public Long getMembersCount(Project project)
Count the total of unique users in the project and in the project's group- Parameters:
project
- The project- Returns:
- The total of members
-
getGroupUsersFromProject
public List<User> getGroupUsersFromProject(Group group, Project project, BiPredicate<Project,UserIdentity> filteringPredicate)
Get the users from a group that are part of the project. They can be filtered with a predicate- Parameters:
group
- The groupproject
- The projectfilteringPredicate
- The predicate to filter- Returns:
- The list of users
-
-