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 (package private) static classProjectMemberManager.ProjectMemberThis class represents a member of a project.
-
Field Summary
Fields Modifier and Type Field Description private static String__PROJECT_MEMBER_NODE_TYPEThe type of a project user node typeprivate static String__PROJECT_MEMBERS_NODEConstants for users project nodeprivate static String__PROJECT_MEMBERS_NODE_TYPEThe type of the project users node typeprivate static String__PROJECT_RIGHT_PROFILEstatic String__WORKSPACES_SERVICE_MEMBERSThe id of the members serviceprotected Context_contextAvalon contextprotected CurrentUserProvider_currentUserProviderCurrent user providerprotected GroupManager_groupManagerThe groups managerprotected WorkspaceModuleExtensionPoint_moduleManagerEPModule managers EPprotected ObservationManager_observationManagerThe observation managerprotected PopulationContextHelper_populationContextHelperThe population context helperprotected ProfileAssignmentStorageExtensionPoint_profileAssignmentStorageExtensionPointProfile assignment storageprotected ProjectManager_projectManagerProject managerprotected ProjectRightHelper_projectRightHelperProject rights helperprotected AmetysObjectResolver_resolverAmetys object resolverprotected RightManager_rightManagerRights managerprotected RightProfilesDAO_rightProfilesDAOProfiles right managerprotected UserDirectoryHelper_userDirectoryHelperThe user directory helperprotected UserHelper_userHelperThe user helperprotected UserManager_userManagerUsers managerstatic StringROLEAvalon 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 void_allowReadAccessOnProject(JCRProjectMember member, Project project)private Set<String>_getAllowedProfile(JCRProjectMember member, AmetysObject object)private 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 List<ModifiablePage>_getProjectDashboardPages(Project project)private JCRProjectMember_getProjectMember(Project project, GroupIdentity group)private JCRProjectMember_getProjectMember(Project project, UserIdentity user)protected ModifiableTraversableAmetysObject_getProjectMembersNode(Project project)Retrieves the users node of the project The users node will be created if necessaryprivate Set<UserIdentity>_getUsersOfGroupMember(JCRProjectMember projectMember)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_removeManagerRights(Project project, UserIdentity userIdentity)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)private void_setReadAccess(JCRProjectMember member, AmetysObject aclObject)booleanaddProjectMember(Project project, UserIdentity user)Add a user to a project with open inscriptions, using the default valuesvoidcontextualize(Context context)Map<String,Object>getCurrentUser()Get the current user informationprivate Set<UserIdentity>getGroupUsers(JCRProjectMember member)List<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 projectLonggetMembersCount(Project project)Count the total of unique users in the project and in the project's groupJCRProjectMembergetOrCreateProjectMember(Project project, GroupIdentity groupIdentity)Retrieve or create a group as a member in a projectJCRProjectMembergetOrCreateProjectMember(Project project, UserIdentity userIdentity)Retrieve or create a user in a projectJCRProjectMembergetProjectMember(Project project, UserIdentity userIdentity)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 projectList<Map<String,Object>>getProjectMembers(String projectName, String lang, boolean expandGroup, boolean withUserContent)Get the members of a project, sorted by managers, non empty role and nameSet<JCRProjectMember>getProjectMembers(Project project)Get the list of users of the projectList<ProjectMemberManager.ProjectMember>getProjectMembers(Project project, boolean expandGroup)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 groupbooleanisProjectMember(Project project, UserIdentity userIdentity)Test if an user is a member of a projectprivate Predicate<JCRProjectMember>isUserOfType(JCRProjectMember.MemberType memberType)Map<String,Object>removeMember(String projectName, String identity, String type)Remove a user from a projectvoidservice(ServiceManager manager)voidsetMemberProfiles(Map<String,String> newProfiles, JCRProjectMember projectMember, Project project, boolean newMember)Set the profiles for a membervoidsetProjectManager(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
-
-
Constructor Detail
-
ProjectMemberManager
public ProjectMemberManager()
-
-
Method Detail
-
contextualize
public void contextualize(Context context) throws ContextException
- Specified by:
contextualizein interfaceContextualizable- Throws:
ContextException
-
service
public void service(ServiceManager manager) throws ServiceException
- Specified by:
servicein 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)
-
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)
-
_setReadAccess
private void _setReadAccess(JCRProjectMember member, AmetysObject aclObject)
-
_allowReadAccessOnProject
private void _allowReadAccessOnProject(JCRProjectMember member, Project project)
-
_getProjectDashboardPages
private List<ModifiablePage> _getProjectDashboardPages(Project project)
-
_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 List<Map<String,Object>> getProjectMembers(String projectName, String lang, boolean expandGroup, boolean withUserContent) 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 contentexpandGroup- true to expand the user of a groupwithUserContent- true to get the user content- Returns:
- the members of project
- Throws:
IllegalAccessException- if an error occurredAmetysRepositoryException- if an error occurred
-
getProjectMembers
public List<ProjectMemberManager.ProjectMember> getProjectMembers(Project project, boolean expandGroup) throws IllegalAccessException, 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 group- Returns:
- the members of project
- Throws:
IllegalAccessException- if an error occurredAmetysRepositoryException- 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
public Set<JCRProjectMember> 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- Parameters:
project- The projectuserIdentity- The user identity- Returns:
- True if this user is a member of this project
-
getProjectMember
public JCRProjectMember 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
-
_getUsersOfGroupMember
private Set<UserIdentity> _getUsersOfGroupMember(JCRProjectMember projectMember)
-
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
-
_removeManagerRights
private void _removeManagerRights(Project project, UserIdentity userIdentity)
-
_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
-
getGroupUsers
private Set<UserIdentity> getGroupUsers(JCRProjectMember member)
-
isUserOfType
private Predicate<JCRProjectMember> isUserOfType(JCRProjectMember.MemberType memberType)
-
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
-
-