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 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 GroupManager
_groupManager
The groups managerprotected WorkspaceModuleExtensionPoint
_moduleManagerEP
Module managers EPprotected ObservationManager
_observationManager
The observation managerprotected PopulationContextHelper
_populationContextHelper
The population context helperprotected ProfileAssignmentStorageExtensionPoint
_profileAssignmentStorageExtensionPoint
Profile assignment storageprotected ProjectManager
_projectManager
Project managerprotected ProjectRightHelper
_projectRightHelper
Project rights helperprotected AmetysObjectResolver
_resolver
Ametys object resolverprotected RightManager
_rightManager
Rights managerprotected RightProfilesDAO
_rightProfilesDAO
Profiles right managerprotected UserDirectoryHelper
_userDirectoryHelper
The user directory helperprotected 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 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)
boolean
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 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 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 projectJCRProjectMember
getProjectMember(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 groupboolean
isProjectMember(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 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
-
-
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)
-
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
-
-