Class ProjectMemberManager
java.lang.Object
org.ametys.runtime.plugin.component.AbstractLogEnabled
org.ametys.plugins.workspaces.members.ProjectMemberManager
- All Implemented Interfaces:
LogEnabled
,Initializable
,Component
,Contextualizable
,Serviceable
public class ProjectMemberManager
extends AbstractLogEnabled
implements Serviceable, Component, Contextualizable, Initializable
Helper component for managing project's users
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
This class represents a member of a project. -
Field Summary
Modifier and TypeFieldDescriptionstatic final String
The id of the members serviceprotected AbstractCacheManager
The cache managerprotected Context
Avalon contextprotected CurrentUserProvider
Current user providerprotected GroupDirectoryContextHelper
The group directory context helperprotected GroupManager
The groups managerprotected LanguagesManager
The language managerprotected WorkspaceModuleExtensionPoint
Module managers EPprotected ObservationManager
The observation managerprotected PopulationContextHelper
The population context helperprotected ProfileAssignmentStorageExtensionPoint
Profile assignment storageprotected ProjectInvitationHelper
The project invitation helperprotected ProjectManager
Project managerprotected ProjectRightHelper
Project rights helperprotected AmetysObjectResolver
Ametys object resolverprotected RightManager
Rights managerprotected RightProfilesDAO
Profiles right managerprotected URIResolverExtensionPoint
The page URI resolver.protected UserDirectoryHelper
The user directory helperprotected UserDirectoryPageResolver
The resolver for user directory pagesprotected UserHelper
The user helperprotected UserManager
Users managerstatic final String
Avalon Role -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionGet a map of each available module, with the default profileprotected JCRProjectMember
_getOrCreateProjectMember
(Project project, Predicate<? super AmetysObject> findMemberPredicate) Retrieve or create a member in a projectprotected 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 necessaryAdd a new memberAdd 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) Get the current user informationgetGroupUsersFromProject
(Group group, Project project, BiPredicate<Project, UserIdentity> filteringPredicate) Get the users from a group that are part of the project.getMemberModuleRights
(String projectName) Retrieves the rights for the current user in the projectgetMembersCount
(Project project) Count the total of unique users in the project and in the project's groupgetOrCreateProjectMember
(Project project, GroupIdentity groupIdentity) Retrieve or create a group as a member in a projectgetOrCreateProjectMember
(Project project, UserIdentity userIdentity) Retrieve or create a user in a projectgetProjectMember
(Project project, UserIdentity userIdentity) Retrieve the member of a project corresponding to the user identitygetProjectMember
(Project project, UserIdentity userIdentity, Set<GroupIdentity> userGroups) Retrieve the member of a project corresponding to the user identitygetProjectMemberData
(String projectName, String identity, String type) Retrieve the data of a member of a project, or the default data if no user is providedGet the members of current project or all the members of all projects in where is no current projectgetProjectMembers
(String projectName, String lang) Get the members of a project, sorted by managers, non empty role and namegetProjectMembers
(Project project, boolean expandGroup, boolean legacyArguments) Get the members of a project, sorted by managers, non empty role and namegroup2Json
(Group group) Get the JSON representation of a groupvoid
boolean
isProjectMember
(Project project, UserIdentity userIdentity) Test if an user is a member of a project (directly or by a group)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 projectsetProjectMemberData
(String projectName, String identity, String type, Map<String, String> newProfiles, String role) Set the user data in the projectMethods inherited from class org.ametys.runtime.plugin.component.AbstractLogEnabled
getLogger, setLogger
-
Field Details
-
ROLE
Avalon Role -
__WORKSPACES_SERVICE_MEMBERS
The id of the members service- See Also:
-
_context
Avalon context -
_projectManager
Project manager -
_projectRightHelper
Project rights helper -
_rightProfilesDAO
Profiles right manager -
_profileAssignmentStorageExtensionPoint
Profile assignment storage -
_resolver
Ametys object resolver -
_rightManager
Rights manager -
_currentUserProvider
Current user provider -
_userManager
Users manager -
_observationManager
The observation manager -
_moduleManagerEP
Module managers EP -
_userHelper
The user helper -
_groupManager
The groups manager -
_populationContextHelper
The population context helper -
_userDirectoryHelper
The user directory helper -
_projectInvitationHelper
The project invitation helper -
_languagesManager
The language manager -
_userDirectoryPageResolver
The resolver for user directory pages -
_uriResolver
The page URI resolver. -
_groupDirectoryContextHelper
The group directory context helper -
_abstractCacheManager
The cache manager
-
-
Constructor Details
-
ProjectMemberManager
public ProjectMemberManager()
-
-
Method Details
-
contextualize
- Specified by:
contextualize
in interfaceContextualizable
- Throws:
ContextException
-
service
- Specified by:
service
in interfaceServiceable
- Throws:
ServiceException
-
initialize
- Specified by:
initialize
in interfaceInitializable
- Throws:
Exception
-
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
-
addMembers
public Map<String,Object> addMembers(String projectName, List<Map<String, String>> newMembers, List<String> invitEmails) throws IllegalAccessExceptionAdd 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
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 IllegalAccessExceptionSet 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
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
-
getCurrentUser
Get the current user information- Returns:
- The user
-
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
-
getProjectMembers
public Collection<ProjectMemberManager.ProjectMember> getProjectMembers(Project project, boolean expandGroup, @Deprecated boolean legacyArguments) 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 grouplegacyArguments
- this is a legacy arguments depreciated in 4.5 version of the class- Returns:
- the members of project
- Throws:
AmetysRepositoryException
- if an error occurred
-
getMemberModuleRights
Retrieves the rights for the current user in the project- Parameters:
projectName
- The project Name- Returns:
- The project
-
_getProjectMembers
Get the list of users of the project- Parameters:
project
- The project- Returns:
- The list of users
-
isProjectMember
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
Set the manager of a project- Parameters:
projectName
- The project nameprofileId
- The profile id to affectmanagers
- The managers' user identity
-
getOrCreateProjectMember
Retrieve or create a user in a project- Parameters:
project
- The projectuserIdentity
- the user- Returns:
- The user
-
getOrCreateProjectMember
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
-
_getProjectMembersNode
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
Get the JSON representation of a group- Parameters:
group
- The group- Returns:
- The group
-
getMembersCount
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
-