2019-11-07 13:45:40 +01:00
package gr.cite.bluebridge.portlets.admin.usersmanagementportlet ;
import java.io.IOException ;
import java.text.SimpleDateFormat ;
2021-05-13 12:17:25 +02:00
import java.util.ArrayList ;
import java.util.Arrays ;
import java.util.Date ;
import java.util.HashSet ;
import java.util.Iterator ;
import java.util.List ;
import java.util.Map ;
import java.util.Set ;
2019-11-07 13:45:40 +01:00
import java.util.stream.Collectors ;
import javax.portlet.GenericPortlet ;
import javax.portlet.PortletException ;
import javax.portlet.PortletRequest ;
import javax.portlet.PortletRequestDispatcher ;
import javax.portlet.RenderRequest ;
import javax.portlet.RenderResponse ;
import javax.portlet.ResourceRequest ;
import javax.portlet.ResourceResponse ;
import javax.servlet.http.HttpServletRequest ;
import org.gcube.common.portal.PortalContext ;
2021-05-13 12:17:25 +02:00
import org.gcube.portal.mailing.message.EmailAddress ;
import org.gcube.portal.mailing.message.Recipient ;
import org.gcube.portal.mailing.message.RecipientType ;
2019-11-07 13:45:40 +01:00
import org.gcube.portal.mailing.service.EmailTemplateService ;
2021-05-13 18:03:53 +02:00
import org.gcube.portal.mailing.templates.TemplateManagerHasAssignedRoles ;
import org.gcube.portal.mailing.templates.TemplateManagerHasRevokedRoles ;
2019-11-07 13:45:40 +01:00
import org.gcube.portal.mailing.templates.TemplateUserApprovedRequestVRE ;
import org.gcube.portal.mailing.templates.TemplateUserHasBeenUnregisteredVRE ;
import org.gcube.portal.mailing.templates.TemplateUserRejectedRequestVRE ;
import org.gcube.vomanagement.usermanagement.GroupManager ;
import org.gcube.vomanagement.usermanagement.RoleManager ;
import org.gcube.vomanagement.usermanagement.UserManager ;
import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault ;
import org.gcube.vomanagement.usermanagement.exception.RoleRetrievalFault ;
import org.gcube.vomanagement.usermanagement.exception.TeamRetrievalFault ;
import org.gcube.vomanagement.usermanagement.exception.UserManagementPortalException ;
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException ;
import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault ;
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager ;
import org.gcube.vomanagement.usermanagement.impl.LiferayRoleManager ;
import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager ;
import org.gcube.vomanagement.usermanagement.model.GCubeGroup ;
import org.gcube.vomanagement.usermanagement.model.GCubeMembershipRequest ;
import org.gcube.vomanagement.usermanagement.model.GCubeRole ;
import org.gcube.vomanagement.usermanagement.model.GCubeTeam ;
import org.gcube.vomanagement.usermanagement.model.GCubeUser ;
import org.gcube.vomanagement.usermanagement.model.MembershipRequestStatus ;
import com.google.gson.Gson ;
import com.liferay.portal.kernel.exception.PortalException ;
import com.liferay.portal.kernel.exception.SystemException ;
import com.liferay.portal.kernel.json.JSONArray ;
import com.liferay.portal.kernel.json.JSONFactoryUtil ;
import com.liferay.portal.kernel.json.JSONObject ;
import com.liferay.portal.kernel.log.Log ;
import com.liferay.portal.kernel.log.LogFactoryUtil ;
import com.liferay.portal.kernel.util.ParamUtil ;
import com.liferay.portal.util.PortalUtil ;
import gr.cite.bluebridge.portlets.admin.usersmanagementportlet.mail.templates.TemplateUserHasBeenAssociatedWithGCubeTeam ;
import gr.cite.bluebridge.portlets.admin.usersmanagementportlet.mail.templates.TemplateUserHasBeenDissAssociatedWithGCubeTeam ;
2021-05-13 12:17:25 +02:00
import gr.cite.bluebridge.portlets.admin.usersmanagementportlet.mail.templates.TemplateUserRolesModifiedForGroup ;
2019-11-07 13:45:40 +01:00
public class UsersManagementPortletHome extends GenericPortlet {
protected String viewTemplate ;
protected boolean once = true ;
public GCubeUser currentUser ;
private static Log _log = LogFactoryUtil . getLog ( UsersManagementPortletHome . class ) ;
private static final int REJECT_MEMBERSHIP_REQUESTS_TABLE = 0 ;
private static final int APPROVE_MEMBERSHIP_REQUESTS_TABLE = 1 ;
private static final int REFRESH_MEMBERSHIP_REQUESTS_TABLE = 2 ;
private static final int EDIT_CURRENT_USERS_TABLE = 1 ;
private static final int REFRESH_CURRENT_USERS_TABLE = 2 ;
private static final int SITE_TEAMS_TABLE_CREATE_GROUP = 3 ;
private static final int REFRESH_SITE_TEAMS_TABLE = 2 ;
private static final int EDIT_SITE_TEAMS_TABLE = 1 ;
private static final int DELETE_SITE_TEAMS_TABLE = 0 ;
private static final int ASSIGN_ROLES_TO_USERS = 1 ;
2021-05-12 19:11:24 +02:00
private static final int REMOVE_ROLES_TO_USERS = 3 ;
2019-11-07 13:45:40 +01:00
private static final int ASSIGN_TEAMS_TO_USERS = 2 ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
public void init ( ) {
viewTemplate = getInitParameter ( " view-template " ) ;
}
public void doView ( RenderRequest renderRequest , RenderResponse renderResponse ) throws IOException , PortletException {
include ( viewTemplate , renderRequest , renderResponse ) ;
}
@Override
public void serveResource ( ResourceRequest request , ResourceResponse response ) throws PortletException , IOException {
PortalContext pContext = PortalContext . getConfiguration ( ) ;
HttpServletRequest httpServletRequest = PortalUtil . getHttpServletRequest ( request ) ;
currentUser = pContext . getCurrentUser ( httpServletRequest ) ;
PortletRequest portletRequest = ( PortletRequest ) request . getAttribute ( " javax.portlet.request " ) ;
JSONObject jsonObject = JSONFactoryUtil . createJSONObject ( ) ;
long selfId = currentUser . getUserId ( ) ;
//CurrentUsers
boolean currentUsersTable = ParamUtil . getBoolean ( request , " currentUsersTable " ) ;
boolean deleteUsersFromCurrentUsersTable = ParamUtil . getBoolean ( request , " deleteUsersFromCurrentUsersTable " ) ;
int modeCurrentUsersTable = ParamUtil . getInteger ( request , " modeCurrentUsersTable " ) ;
long groupId = pContext . getCurrentGroupId ( httpServletRequest ) ;
currentUsersTableSection (
currentUsersTable , deleteUsersFromCurrentUsersTable , modeCurrentUsersTable ,
groupId , jsonObject , portletRequest , request , selfId ) ;
//MembershipRequests
boolean fetchUsersRequests = ParamUtil . getBoolean ( request , " fetchUsersRequests " ) ;
int modeMembershipRequestsTable = ParamUtil . getInteger ( request , " modeMembershipRequestsTable " ) ;
membershipRequestsSection (
fetchUsersRequests , modeMembershipRequestsTable ,
jsonObject , request , portletRequest ,
groupId , httpServletRequest ) ;
boolean userRequestRejectionEmailSubject = ParamUtil . getBoolean ( request , " userRequestRejectionEmailSubject " ) ;
if ( userRequestRejectionEmailSubject ) {
try {
GroupManager gm = new LiferayGroupManager ( ) ;
String groupName = gm . getGroup ( groupId ) . getGroupName ( ) ;
String gatewayNameForSubject = PortalContext . getConfiguration ( ) . getGatewayName ( httpServletRequest ) ;
String groupNameForSubject = " " ;
if ( gm . isRootVO ( groupId ) ) {
groupNameForSubject + = " Virtual Organization " ;
groupName = " <b> " + groupName + " </b> Virtual Organization " ;
} else if ( gm . isVRE ( groupId ) ) {
groupNameForSubject + = " Virtual Research Environment " ;
groupName = " <b> " + groupName + " </b> Virtual Research Environment " ;
} else {
groupNameForSubject = groupName ;
_log . debug ( " isRootVO: " + gm . isRootVO ( groupId ) + " \ nisVRE: " + gm . isVRE ( groupId ) ) ;
}
String emailSubject = getUserRequestRejectionEmailSubject ( gatewayNameForSubject , groupNameForSubject ) ;
jsonObject . put ( " userRequestRejectionEmailSubject " , emailSubject ) ;
ArrayList < String > managersEmails = getVREManagersEmailsForGroup ( groupId ) ;
String json = new Gson ( ) . toJson ( managersEmails ) ;
jsonObject . put ( " userRequestRejectionEmailAdminsMailsCC " , json ) ;
_log . debug ( " VRE Manager rejection request email subject -> " + emailSubject ) ;
} catch ( UserManagementSystemException | GroupRetrievalFault e ) {
_log . error ( " Failed to retrieve rejection request email subject " ) ;
e . printStackTrace ( ) ;
}
}
//RejectedmembershipRequests
boolean fetchUsersRejectedRequests = ParamUtil . getBoolean ( request , " fetchUsersRejectedRequests " ) ;
rejectedMembershipRequestsSection (
fetchUsersRejectedRequests ,
jsonObject , request , portletRequest ,
groupId , httpServletRequest ) ;
//count the membership requests
boolean countUsersMembershipRequests = ParamUtil . getBoolean ( request , " countUsersMembershipRequests " ) ;
countUsersMembershipRequestsSection ( countUsersMembershipRequests , jsonObject , groupId ) ;
//Site-teams handling
boolean fetchAllSiteTeamsForTheCurrentGroup = ParamUtil . getBoolean ( request , " fetchAllSiteTeamsForTheCurrentGroup " ) ;
int modeSiteTeams = ParamUtil . getInteger ( request , " modeSiteTeams " ) ;
if ( fetchAllSiteTeamsForTheCurrentGroup ) {
try {
siteTeamsForTheCurrentGroupSection ( request , selfId , modeSiteTeams , groupId , jsonObject ) ;
} catch ( SystemException e ) {
e . printStackTrace ( ) ;
}
}
boolean rolesInitial = ParamUtil . getBoolean ( request , " rolesInitial " ) ;
if ( rolesInitial ) {
fetchRolesNames ( groupId , jsonObject ) ;
}
boolean teamsInitial = ParamUtil . getBoolean ( request , " teamsInitial " ) ;
if ( teamsInitial ) {
try {
fetchTeamsNames ( groupId , jsonObject ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
}
}
response . getWriter ( ) . println ( jsonObject ) ;
super . serveResource ( request , response ) ;
}
protected void include ( String path , RenderRequest renderRequest , RenderResponse renderResponse ) throws IOException , PortletException {
String url = null ;
if ( renderRequest . getParameter ( " jspPage " ) = = null | | renderRequest . getParameter ( " jspPage " ) . equals ( " ./ " ) )
url = path + " usersManagement.jsp " ;
else
url = path + renderRequest . getParameter ( " jspPage " ) ;
PortletRequestDispatcher portletRequestDispatcher = getPortletContext ( ) . getRequestDispatcher ( url ) ;
if ( portletRequestDispatcher = = null ) {
_log . error ( path + " is not a valid include " ) ;
}
else {
portletRequestDispatcher . include ( renderRequest , renderResponse ) ;
}
}
protected void rejectMembershipRequests (
PortletRequest portletRequest ,
ResourceRequest request , long [ ] theReqIDs ,
long groupId , long managerId , boolean CustomRejectionEmailFromAdmin ,
String CustomRejectionEmailBodyFromAdmin )
throws NumberFormatException , SystemException , PortalException , UserManagementSystemException , GroupRetrievalFault {
UserManager um = new LiferayUserManager ( ) ;
List < GCubeMembershipRequest > reqs ;
GroupManager gm = new LiferayGroupManager ( ) ;
String managerName = currentUser . getUsername ( ) ;
String groupName = gm . getGroup ( groupId ) . getGroupName ( ) ;
String groupNameForSubject = " " ;
if ( gm . isRootVO ( groupId ) ) {
groupNameForSubject + = " Virtual Organization " ;
groupName = " <b> " + groupName + " </b> Virtual Organization " ;
} else if ( gm . isVRE ( groupId ) ) {
groupNameForSubject + = " Virtual Research Environment " ;
groupName = " <b> " + groupName + " </b> Virtual Research Environment " ;
} else {
groupNameForSubject = groupName ;
_log . debug ( " isRootVO: " + gm . isRootVO ( groupId ) + " \ nisVRE: " + gm . isVRE ( groupId ) ) ;
}
HttpServletRequest httpServletRequest = PortalUtil . getHttpServletRequest ( request ) ;
_log . debug ( " Rejecting requests for the group: " + groupName ) ;
try {
reqs = um . listMembershipRequestsByGroup ( groupId ) ;
ArrayList < String > managersEmails = getVREManagersEmailsForGroup ( groupId ) ;
for ( GCubeMembershipRequest req : reqs ) {
for ( long reqId : theReqIDs ) {
if ( req . getStatus ( ) = = MembershipRequestStatus . REQUEST & & req . getMembershipRequestId ( ) = = reqId ) {
GCubeUser replyUser = um . getUserById ( managerId ) ;
String replyComment = " Membership Request rejected " ;
GCubeMembershipRequest gcmr = um . rejectMembershipRequest ( req . getRequestingUser ( ) . getUserId ( ) , groupId , replyUser . getUsername ( ) , replyComment ) ;
String userName = req . getRequestingUser ( ) . getUsername ( ) ;
String emailRecipient = req . getRequestingUser ( ) . getEmail ( ) ;
String emailSubject = EmailPartsConstruction . subjectForMembershipRequestAcceptanceOrRejection (
" membershipRequestRejectionSubject " , groupNameForSubject ) ;
// bcc also the VRE managers to be notified about the registration
int recSize = managersEmails . size ( ) + 1 ;
Recipient [ ] recs = new Recipient [ recSize ] ;
recs [ 0 ] = new Recipient ( new EmailAddress ( emailRecipient ) , RecipientType . TO ) ;
if ( ! managersEmails . isEmpty ( ) ) {
int i = 1 ;
for ( String mEmail : managersEmails ) {
recs [ i ] = new Recipient ( new EmailAddress ( mEmail ) , RecipientType . BCC ) ;
i + + ;
}
}
TemplateUserRejectedRequestVRE requestRejectedTemplate = new TemplateUserRejectedRequestVRE (
req . getRequestingUser ( ) , replyUser , gm . getGroup ( groupId ) , gcmr . getCreateDate ( ) ,
PortalContext . getConfiguration ( ) . getGatewayName ( httpServletRequest ) , PortalContext . getConfiguration ( ) . getGatewayURL ( httpServletRequest ) ) ;
EmailTemplateService . send ( emailSubject , ( org . gcube . common . portal . mailing . templates . Template ) requestRejectedTemplate , httpServletRequest , recs ) ;
_log . debug ( " Admin: " + managerName + " rejected the membership request of the user: " + userName + " for the site: " + groupName ) ;
}
}
}
} catch ( UserManagementPortalException e ) {
_log . debug ( " MembershipRequest retrieval failure " ) ;
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
_log . debug ( " MembershipRequest retrieval failure " ) ;
e . printStackTrace ( ) ;
} catch ( GroupRetrievalFault e ) {
_log . debug ( " MembershipRequest retrieval failure " ) ;
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
_log . debug ( " MembershipRequest retrieval failure " ) ;
e . printStackTrace ( ) ;
}
}
protected void acceptMemebershipRequestAndAddUsersToGroup ( PortletRequest portletRequest , ResourceRequest request , long [ ] reqIDs , Long groupId , Long managerId ) throws NumberFormatException , PortalException , SystemException , UserManagementSystemException , GroupRetrievalFault , UserRetrievalFault {
LiferayUserManager lum = new LiferayUserManager ( ) ;
List < GCubeMembershipRequest > membershipRequests = lum . listMembershipRequestsByGroup ( groupId ) ;
GCubeUser manager = lum . getUserById ( managerId ) ;
GroupManager gm = new LiferayGroupManager ( ) ;
String groupName = gm . getGroup ( groupId ) . getGroupName ( ) ;
String groupNameForSubject = " " ;
HttpServletRequest httpServletRequest = PortalUtil . getHttpServletRequest ( request ) ;
if ( gm . isRootVO ( groupId ) ) {
groupNameForSubject + = " Virtual Organization " ;
groupName = " <b> " + groupName + " </b> Virtual Organization " ;
} else if ( gm . isVRE ( groupId ) ) {
groupNameForSubject + = " Virtual Research Environment " ;
groupName = " <b> " + groupName + " </b> Virtual Research Environment " ;
} else {
groupNameForSubject = groupName ;
_log . debug ( " isRootVO: " + gm . isRootVO ( groupId ) + " \ nisVRE: " + gm . isVRE ( groupId ) ) ;
}
_log . debug ( " Accepting membership requests for the group: " + groupName ) ;
ArrayList < String > managersEmails = getVREManagersEmailsForGroup ( groupId ) ;
for ( GCubeMembershipRequest gcmr : membershipRequests ) {
for ( long reqId : reqIDs ) {
if ( gcmr . getStatus ( ) = = MembershipRequestStatus . REQUEST & & gcmr . getMembershipRequestId ( ) = = reqId ) {
boolean addUserToGroup = true ;
try {
String managerComments = " Membership request approved " ;
@SuppressWarnings ( " unused " )
GCubeMembershipRequest gcmr2 = lum . acceptMembershipRequest ( gcmr . getRequestingUser ( ) . getUserId ( ) , groupId , addUserToGroup , manager . getUsername ( ) , managerComments ) ;
lum . assignUserToGroup ( groupId , gcmr . getRequestingUser ( ) . getUserId ( ) ) ;
String userName = gcmr . getRequestingUser ( ) . getUsername ( ) ;
String managerName = manager . getUsername ( ) ;
_log . debug ( " Admin: " + managerName + " accepted user's : " + userName + " membership request for the site: " + groupName ) ;
String userEmail = gcmr . getRequestingUser ( ) . getEmail ( ) ;
String properEmailSubject = EmailPartsConstruction . subjectForMembershipRequestAcceptanceOrRejection (
" membershipRequestAcceptanceSubject " , groupNameForSubject ) ;
// bcc also the VRE managers to be notified about the registration
int recSize = managersEmails . size ( ) + 1 ;
Recipient [ ] recs = new Recipient [ recSize ] ;
recs [ 0 ] = new Recipient ( new EmailAddress ( userEmail ) , RecipientType . TO ) ;
if ( ! managersEmails . isEmpty ( ) ) {
int i = 1 ;
for ( String mEmail : managersEmails ) {
recs [ i ] = new Recipient ( new EmailAddress ( mEmail ) , RecipientType . BCC ) ;
i + + ;
}
}
TemplateUserApprovedRequestVRE requestAcceptedTemplate = new TemplateUserApprovedRequestVRE (
gcmr . getRequestingUser ( ) , manager , gm . getGroup ( groupId ) , gcmr . getCreateDate ( ) ,
PortalContext . getConfiguration ( ) . getGatewayName ( httpServletRequest ) , PortalContext . getConfiguration ( ) . getGatewayURL ( httpServletRequest ) ) ;
EmailTemplateService . send ( properEmailSubject , ( org . gcube . common . portal . mailing . templates . Template ) requestAcceptedTemplate , httpServletRequest , recs ) ;
} catch ( UserManagementPortalException e ) {
_log . debug ( " User: " + gcmr . getRequestingUser ( ) . getUsername ( ) + " wasn't added to the site: " + gm . getGroup ( groupId ) . getGroupName ( ) ) ;
e . printStackTrace ( ) ;
}
}
}
}
}
protected JSONArray numberOfRequestsForSpecificGroup ( long groupId ) throws PortalException , SystemException , UserManagementSystemException , GroupRetrievalFault , UserRetrievalFault {
JSONArray ja = JSONFactoryUtil . createJSONArray ( ) ;
UserManager um = new LiferayUserManager ( ) ;
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
String groupName = lgm . getGroup ( groupId ) . getGroupName ( ) ;
_log . debug ( " Counting membership requests for group: " + groupName + " ... " ) ;
List < GCubeMembershipRequest > gcmrList = new ArrayList < GCubeMembershipRequest > ( ) ;
for ( GCubeMembershipRequest gcmr : um . listMembershipRequestsByGroup ( groupId ) ) {
if ( gcmr . getStatus ( ) = = MembershipRequestStatus . REQUEST ) {
gcmrList . add ( gcmr ) ;
}
}
_log . debug ( " There are " + gcmrList . size ( ) + " for the group: " + groupName ) ;
ja . put ( gcmrList . size ( ) ) ;
ja . put ( EmailPartsConstruction . returnPortalName ( ) ) ;
return ja ;
}
protected JSONArray currentGroupUsers ( long groupId , long selfId , HttpServletRequest httpServletRequest ) throws GroupRetrievalFault , UserManagementSystemException , UserRetrievalFault {
JSONArray ja = JSONFactoryUtil . createJSONArray ( ) ;
List < GCubeUser > users = new ArrayList < GCubeUser > ( ) ;
LiferayUserManager lm = new LiferayUserManager ( ) ;
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
String groupName = lgm . getGroup ( groupId ) . getGroupName ( ) ;
try {
users = lm . listUsersByGroup ( groupId ) ;
_log . debug ( " Retrieving users for the group: " + groupName ) ;
if ( users . size ( ) > 0 ) {
SimpleDateFormat dateFormat = new SimpleDateFormat ( " dd-MMM-yyyy " , httpServletRequest . getLocale ( ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
_log . debug ( " There are " + users . size ( ) + " users in the group: " + groupName ) ;
for ( GCubeUser someUser : users ) {
JSONObject jo = JSONFactoryUtil . createJSONObject ( ) ;
try {
List < GCubeMembershipRequest > gcmrs = lm . getMembershipRequests ( someUser . getUserId ( ) , groupId , MembershipRequestStatus . APPROVED ) ;
GCubeMembershipRequest mr = gcmrs . get ( gcmrs . size ( ) - 1 ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
jo . put ( " requestDate " , dateFormat . format ( mr . getCreateDate ( ) ) ) ;
jo . put ( " RequestDateObject " , mr . getCreateDate ( ) ) ;
jo . put ( " validationDate " , dateFormat . format ( mr . getReplyDate ( ) ) ) ;
jo . put ( " ValidationDateObject " , mr . getReplyDate ( ) ) ;
jo . put ( " requestComments " , mr . getComment ( ) ) ;
jo . put ( " reqID " , mr . getMembershipRequestId ( ) ) ;
} catch ( Exception e ) {
jo . put ( " requestDate " , " - " ) ;
jo . put ( " RequestDateObject " , " - " ) ;
jo . put ( " validationDate " , " - " ) ;
jo . put ( " ValidationDateObject " , " - " ) ;
jo . put ( " requestComments " , " - " ) ;
jo . put ( " reqID " , 0 ) ;
}
jo . put ( " userName " , someUser . getUsername ( ) ) ;
jo . put ( " userFullName " , someUser . getFullname ( ) ) ;
jo . put ( " userEmail " , someUser . getEmail ( ) ) ;
jo . put ( " userId " , someUser . getUserId ( ) ) ;
String isSelf = ( someUser . getUserId ( ) = = selfId ) ? " true " : " false " ;
jo . put ( " isSelf " , isSelf ) ;
LiferayRoleManager lrm = new LiferayRoleManager ( ) ;
List < GCubeRole > rolesList = lrm . listRolesByUserAndGroup ( someUser . getUserId ( ) , groupId ) ;
JSONArray ja2 = JSONFactoryUtil . createJSONArray ( ) ;
for ( GCubeRole r : rolesList ) {
ja2 . put ( r . getRoleName ( ) ) ;
}
jo . put ( " userSiteRoles " , ja2 ) ;
List < GCubeTeam > gcubeTeams = lrm . listTeamsByUserAndGroup ( someUser . getUserId ( ) , groupId ) ;
JSONArray ja3 = JSONFactoryUtil . createJSONArray ( ) ;
for ( GCubeTeam t : gcubeTeams ) {
ja3 . put ( t . getTeamName ( ) ) ;
}
jo . put ( " userTeams " , ja3 ) ;
ja . put ( jo ) ;
}
_log . debug ( " User: " + currentUser . getUsername ( ) + " is displaying users of the site: " + lgm . getGroup ( groupId ) . getGroupName ( ) ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
return ja ;
}
protected JSONArray currentGroupUsersRequests ( long groupId , HttpServletRequest httpServletRequest ) throws GroupRetrievalFault , UserManagementSystemException , UserRetrievalFault {
JSONArray ja = JSONFactoryUtil . createJSONArray ( ) ;
@SuppressWarnings ( " unused " )
List < GCubeUser > users = new ArrayList < GCubeUser > ( ) ;
LiferayUserManager lm = new LiferayUserManager ( ) ;
users = lm . listUsersByGroup ( groupId ) ;
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
String groupName = lgm . getGroup ( groupId ) . getGroupName ( ) ;
_log . debug ( " Retrieving requests for: " + groupName ) ;
List < GCubeMembershipRequest > reqs = new ArrayList < GCubeMembershipRequest > ( ) ;
try {
reqs = lm . listMembershipRequestsByGroup ( groupId ) ;
_log . debug ( reqs . size ( ) + " requests for: " + groupName ) ;
if ( reqs . size ( ) > 0 ) {
SimpleDateFormat dateFormat = new SimpleDateFormat ( " dd-MMM-yyyy " , httpServletRequest . getLocale ( ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
for ( GCubeMembershipRequest gcmr : reqs ) {
if ( gcmr . getStatus ( ) = = MembershipRequestStatus . REQUEST ) {
JSONObject jo = JSONFactoryUtil . createJSONObject ( ) ;
jo . put ( " requestDate " , dateFormat . format ( gcmr . getCreateDate ( ) ) ) ;
jo . put ( " requestDateObject " , gcmr . getCreateDate ( ) ) ;
try {
jo . put ( " validationDate " , dateFormat . format ( gcmr . getReplyDate ( ) ) ) ;
} catch ( Exception e ) {
_log . debug ( " Reply date doesn \ 't exist for the membership request of user: " + gcmr . getRequestingUser ( ) . getUsername ( ) ) ;
}
jo . put ( " requestComments " , gcmr . getComment ( ) ) ;
jo . put ( " requestId " , gcmr . getMembershipRequestId ( ) ) ;
GCubeUser gcu = gcmr . getRequestingUser ( ) ;
jo . put ( " userName " , gcu . getUsername ( ) ) ;
jo . put ( " userFullName " , gcu . getFullname ( ) ) ;
jo . put ( " userEmail " , gcu . getEmail ( ) ) ;
jo . put ( " userId " , gcu . getUserId ( ) ) ;
LiferayRoleManager lrm = new LiferayRoleManager ( ) ;
List < GCubeRole > rolesList = lrm . listRolesByUserAndGroup ( gcu . getUserId ( ) , groupId ) ;
List < String > roles = new ArrayList < String > ( ) ;
for ( GCubeRole gcr : rolesList ) {
roles . add ( gcr . getRoleName ( ) ) ;
}
jo . put ( " userSiteRoles " , roles . toString ( ) ) ;
ja . put ( jo ) ;
}
}
}
_log . debug ( " The admin: " + currentUser . getUsername ( ) + " displayed membershipRequests for the site: " + groupName ) ;
} catch ( Exception e ) {
_log . debug ( " Error while retrieving requests for: " + groupName ) ;
e . printStackTrace ( ) ;
}
return ja ;
}
protected JSONArray currentGroupRejectedUsersRequests ( long groupId , HttpServletRequest httpServletRequest ) throws GroupRetrievalFault , UserManagementSystemException , UserRetrievalFault {
JSONArray ja = JSONFactoryUtil . createJSONArray ( ) ;
@SuppressWarnings ( " unused " )
List < GCubeUser > users = new ArrayList < GCubeUser > ( ) ;
LiferayUserManager lm = new LiferayUserManager ( ) ;
users = lm . listUsersByGroup ( groupId ) ;
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
List < GCubeMembershipRequest > reqs = new ArrayList < GCubeMembershipRequest > ( ) ;
String groupName = lgm . getGroup ( groupId ) . getGroupName ( ) ;
_log . debug ( " Displaying rejected membership requests for the group: " + groupName ) ;
try {
SimpleDateFormat dateFormat = new SimpleDateFormat ( " dd-MMM-yyyy " , httpServletRequest . getLocale ( ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
reqs = lm . listMembershipRequestsByGroup ( groupId ) ;
if ( reqs . size ( ) > 0 ) {
for ( GCubeMembershipRequest gcmr : reqs ) {
if ( gcmr . getStatus ( ) = = MembershipRequestStatus . DENIED ) {
JSONObject jo = JSONFactoryUtil . createJSONObject ( ) ;
jo . put ( " requestDate " , dateFormat . format ( gcmr . getCreateDate ( ) ) ) ;
jo . put ( " requestDateObject " , gcmr . getCreateDate ( ) ) ;
jo . put ( " rejectionDate " , dateFormat . format ( gcmr . getReplyDate ( ) ) ) ;
jo . put ( " rejectionDateObject " , gcmr . getReplyDate ( ) ) ;
jo . put ( " validationDate " , dateFormat . format ( gcmr . getReplyDate ( ) ) ) ;
jo . put ( " requestComments " , gcmr . getComment ( ) ) ;
jo . put ( " requestId " , gcmr . getMembershipRequestId ( ) ) ;
GCubeUser gcu = gcmr . getRequestingUser ( ) ;
jo . put ( " userName " , gcu . getUsername ( ) ) ;
jo . put ( " userFullName " , gcu . getFullname ( ) ) ;
jo . put ( " userEmail " , gcu . getEmail ( ) ) ;
jo . put ( " userId " , gcu . getUserId ( ) ) ;
LiferayRoleManager lrm = new LiferayRoleManager ( ) ;
List < GCubeRole > rolesList = lrm . listRolesByUserAndGroup ( gcu . getUserId ( ) , groupId ) ;
List < String > roles = new ArrayList < String > ( ) ;
for ( GCubeRole gcr : rolesList ) {
roles . add ( gcr . getRoleName ( ) ) ;
}
jo . put ( " userSiteRoles " , roles . toString ( ) ) ;
ja . put ( jo ) ;
}
}
}
_log . debug ( " The admin: " + currentUser . getUsername ( ) + " displayed rejectedMembershipRequests for the site: " + groupName ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
return ja ;
}
2021-05-13 12:17:25 +02:00
/ * *
2021-05-13 12:29:34 +02:00
* this method assign or revoke VE Groups to one user
2021-05-13 12:17:25 +02:00
* manage the assignment to teams
2021-05-13 12:29:34 +02:00
* @param groupId the LR Site groupID
2021-05-13 12:17:25 +02:00
* @param usersIDs
* @param usersTeams
* @param selfId
* @param request
* /
private void assignRemoveUserToTeams ( LiferayRoleManager lrm , GCubeUser gcu , Long groupId , String groupName , long [ ] usersIDs , String [ ] usersTeams , long selfId , HttpServletRequest httpServletRequest ) throws Exception {
long [ ] gCubeTeamIDs = new long [ usersTeams . length ] ;
String [ ] gCubeTeamNames = new String [ usersTeams . length ] ;
StringBuffer teamNames = new StringBuffer ( ) ;
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
LiferayUserManager lum = new LiferayUserManager ( ) ;
for ( int i = 0 ; i < usersTeams . length ; i + + ) {
GCubeTeam team = null ;
try {
team = lrm . getTeam ( groupId , usersTeams [ i ] . trim ( ) ) ;
gCubeTeamIDs [ i ] = team . getTeamId ( ) ;
gCubeTeamNames [ i ] = team . getTeamName ( ) ;
if ( i ! = usersTeams . length - 1 ) {
teamNames . append ( gCubeTeamNames [ i ] ) . append ( " , " ) ;
}
else {
teamNames . append ( gCubeTeamNames [ i ] ) ;
}
_log . debug ( " Succeeded at retrieving team with name: " + usersTeams [ i ] . trim ( ) + " for the group: " + groupName ) ;
} catch ( TeamRetrievalFault e1 ) {
_log . debug ( " Failed at retrieving team with name: " + usersTeams [ i ] . trim ( ) + " for the group: " + groupName ) ;
e1 . printStackTrace ( ) ;
}
}
try {
List < GCubeTeam > oldUserTeams = lrm . listTeamsByUserAndGroup ( gcu . getUserId ( ) , groupId ) ;
List < Long > oldUserTeamsIDs = new ArrayList < Long > ( ) ;
for ( Iterator < GCubeTeam > it = oldUserTeams . iterator ( ) ; it . hasNext ( ) ; ) {
GCubeTeam gct = it . next ( ) ;
oldUserTeamsIDs . add ( gct . getTeamId ( ) ) ;
}
List < GCubeTeam > newUserTeams = new ArrayList < GCubeTeam > ( ) ;
List < Long > newUserTeamsIDs = new ArrayList < Long > ( ) ;
for ( long gCubeTeamID : gCubeTeamIDs ) {
GCubeTeam gct = lrm . getTeam ( gCubeTeamID ) ;
newUserTeams . add ( gct ) ;
newUserTeamsIDs . add ( gCubeTeamID ) ;
}
List < GCubeTeam > newTeamsToBeAssociatedWith = new ArrayList < GCubeTeam > ( newUserTeams ) ;
List < Long > newTeamsIDsToBeAssociatedWith = new ArrayList < Long > ( newUserTeamsIDs ) ;
newUserTeams . removeAll ( oldUserTeams ) ;
newUserTeamsIDs . removeAll ( oldUserTeamsIDs ) ;
for ( Long gctID : newUserTeamsIDs ) {
lrm . assignTeamToUser ( gcu . getUserId ( ) , gctID ) ;
GCubeTeam gct = lrm . getTeam ( gctID ) ;
notifyUsersByEmailOnTeamAssignment ( groupId , gcu , lum . getUserById ( selfId ) , lgm . getGroup ( groupId ) , httpServletRequest , gct ) ;
}
if ( newUserTeamsIDs . size ( ) > 0 )
_log . debug ( " User: " + gcu . getUsername ( ) + " was added to following teams: " + teamNames ) ;
else
_log . debug ( " User: " + gcu . getUsername ( ) + " was added to no new teams " ) ;
oldUserTeams . removeAll ( newTeamsToBeAssociatedWith ) ;
oldUserTeamsIDs . removeAll ( newTeamsIDsToBeAssociatedWith ) ;
List < Long > teamsIDsToBeDisassociatedFrom = new ArrayList < Long > ( oldUserTeamsIDs ) ;
if ( teamsIDsToBeDisassociatedFrom . size ( ) ! = 0 ) {
List < GCubeTeam > teamsToBeDisassociatedFrom = new ArrayList < GCubeTeam > ( ) ;
for ( Iterator < Long > it = teamsIDsToBeDisassociatedFrom . iterator ( ) ; it . hasNext ( ) ; ) {
teamsToBeDisassociatedFrom . add ( lrm . getTeam ( it . next ( ) ) ) ;
}
lrm . deleteUserTeams ( gcu . getUserId ( ) , teamsToBeDisassociatedFrom ) ;
for ( int i = 0 ; i < teamsToBeDisassociatedFrom . size ( ) ; i + + ) {
notifyUsersByEmailOnTeamDismissal ( groupId , gcu , lum . getUserById ( selfId ) , lgm . getGroup ( groupId ) , httpServletRequest , teamsToBeDisassociatedFrom . get ( i ) ) ;
}
}
} catch ( TeamRetrievalFault e ) {
_log . debug ( " User: " + gcu . getUsername ( ) + " failed to be added to the following teams: " + teamNames ) ;
e . printStackTrace ( ) ;
}
}
/ * *
2021-05-13 12:29:34 +02:00
* Called in case of User Assignment or Revokations of roles or assign / remove group , see typeOfChangesUpponUserMode param
2021-05-13 12:17:25 +02:00
*
2021-05-13 12:29:34 +02:00
* @param groupId the LR Site groupID
* @param usersIDs the LR userIDs that are subject for this operation
2021-05-13 12:17:25 +02:00
* @param theRoles
* @param usersTeams
2021-05-13 12:29:34 +02:00
* @param deletePreviousRoles should not be used anymore
2021-05-13 12:17:25 +02:00
* @param selfId
2021-05-13 12:29:34 +02:00
* @param typeOfChangesUpponUserMode is the Number of operation ( 1 : assign role , 2 : assign / remove group , 3 : revoke role )
2021-05-13 12:17:25 +02:00
* @param request
* @return
* /
2019-11-07 13:45:40 +01:00
protected JSONArray usersForCurrrentUsersTablePlusRoles ( Long groupId ,
long [ ] usersIDs , String [ ] theRoles , String [ ] usersTeams ,
boolean deletePreviousRoles , long selfId , int typeOfChangesUpponUserMode ,
ResourceRequest request
) throws SystemException , PortalException , UserManagementSystemException , UserRetrievalFault , RoleRetrievalFault , GroupRetrievalFault {
2021-05-13 12:17:25 +02:00
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
2019-11-07 13:45:40 +01:00
LiferayRoleManager lrm = new LiferayRoleManager ( ) ;
LiferayUserManager lum = new LiferayUserManager ( ) ;
2021-05-13 12:17:25 +02:00
String groupName = lgm . getGroup ( groupId ) . getGroupName ( ) ;
2019-11-07 13:45:40 +01:00
HttpServletRequest httpServletRequest = PortalUtil . getHttpServletRequest ( request ) ;
2021-05-13 12:29:34 +02:00
_log . info ( " Editing users roles or group for the context: " + groupName ) ;
2021-05-13 12:17:25 +02:00
_log . debug ( " String[] theRoles length?= " + theRoles . length ) ;
for ( int i = 0 ; i < theRoles . length ; i + + ) {
_log . debug ( " role: " + theRoles [ i ] ) ;
}
_log . debug ( " String[] usersTeams length?= " + usersTeams . length ) ;
for ( int i = 0 ; i < usersTeams . length ; i + + ) {
_log . debug ( " team: " + usersTeams [ i ] ) ;
}
2021-05-13 12:29:34 +02:00
_log . info ( " Number of operation (1:assign role, 2: assign/remove group, 3:revoke role) is = " + typeOfChangesUpponUserMode ) ;
2021-05-13 12:17:25 +02:00
_log . debug ( " usersIDs.length= " + usersIDs . length ) ;
if ( usersIDs . length = = 1 ) { // SINGLE USER EDIT, support assignment and removal of roles and groups
2019-11-07 13:45:40 +01:00
GCubeUser gcu = lum . getUserById ( usersIDs [ 0 ] ) ;
2021-05-13 12:29:34 +02:00
_log . debug ( " single edit for user: " + gcu . getUsername ( ) ) ;
2019-11-07 13:45:40 +01:00
long [ ] roleIDs = new long [ theRoles . length ] ;
GCubeRole [ ] gCubeRoles = new GCubeRole [ theRoles . length ] ;
long [ ] newRoleIDs = new long [ theRoles . length ] ;
List < GCubeRole > oldRoles = lrm . listRolesByUserAndGroup ( usersIDs [ 0 ] , groupId ) ;
for ( int i = 0 ; i < theRoles . length ; i + + ) {
gCubeRoles [ i ] = lrm . getRole ( theRoles [ i ] . trim ( ) , groupId ) ;
roleIDs [ i ] = gCubeRoles [ i ] . getRoleId ( ) ;
newRoleIDs [ i ] = gCubeRoles [ i ] . getRoleId ( ) ;
}
2021-05-13 12:17:25 +02:00
List < GCubeRole > rolesComingFromTheUI = gCubeRoles . length > 0 ? Arrays . asList ( gCubeRoles ) : new ArrayList < GCubeRole > ( ) ;
_log . info ( " roles Coming From The UI " ) ;
rolesComingFromTheUI . forEach ( role - > _log . info ( " Role UI: " + role . getRoleName ( ) ) ) ;
List < Long > roleIdsComingFromTheUICopy = new ArrayList < Long > ( ) ;
List < Long > roleIdsComingFromTheUI = new ArrayList < Long > ( ) ;
for ( long id : newRoleIDs ) {
roleIdsComingFromTheUI . add ( id ) ;
roleIdsComingFromTheUICopy . add ( id ) ;
2019-11-07 13:45:40 +01:00
}
2021-05-13 12:17:25 +02:00
List < Long > oldRoleIds = oldRoles . stream ( ) . map ( role - > new Long ( role . getRoleId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
switch ( typeOfChangesUpponUserMode ) {
case ASSIGN_ROLES_TO_USERS :
2019-11-07 13:45:40 +01:00
//new roles
roleIdsComingFromTheUI . removeAll ( oldRoleIds ) ;
List < GCubeRole > newRoles = new ArrayList < GCubeRole > ( rolesComingFromTheUI . stream ( ) . filter ( role - > roleIdsComingFromTheUI . contains ( role . getRoleId ( ) ) ) . collect ( Collectors . toList ( ) ) ) ;
2021-05-13 12:17:25 +02:00
_log . info ( " New roles found for " + gcu . getUsername ( ) ) ;
boolean roleAssignmentSucceeded = false ;
for ( GCubeRole newRole : newRoles ) {
_log . info ( " NewRole: " + newRole . getRoleName ( ) ) ;
roleAssignmentSucceeded = lrm . assignRoleToUser ( gcu . getUserId ( ) , groupId , newRole . getRoleId ( ) ) ;
}
if ( newRoles . size ( ) > 0 & & roleAssignmentSucceeded )
notifyUsersByEmailOnRoleAssignment ( groupId , gcu , lum . getUserById ( selfId ) , lgm . getGroup ( groupId ) , newRoles , httpServletRequest ) ;
break ;
case REMOVE_ROLES_TO_USERS :
2019-11-07 13:45:40 +01:00
//revoked roles
oldRoleIds . removeAll ( roleIdsComingFromTheUICopy ) ;
List < GCubeRole > rolesRevoked = new ArrayList < GCubeRole > ( oldRoles . stream ( ) . filter ( role - > oldRoleIds . contains ( role . getRoleId ( ) ) ) . collect ( Collectors . toList ( ) ) ) ;
2021-05-13 12:17:25 +02:00
_log . info ( " Revoked roles found for " + gcu . getUsername ( ) ) ;
boolean roleRevokationSucceeded = false ;
for ( GCubeRole role : rolesRevoked ) {
_log . info ( " Revoked role: " + role . getRoleName ( ) ) ;
roleRevokationSucceeded = lrm . removeRoleFromUser ( gcu . getUserId ( ) , groupId , role . getRoleId ( ) ) ;
}
if ( rolesRevoked . size ( ) > 0 & & roleRevokationSucceeded )
notifyUsersByEmailOnRoleRevokation ( groupId , gcu , lum . getUserById ( selfId ) , lgm . getGroup ( groupId ) , rolesRevoked , httpServletRequest ) ;
break ;
case ASSIGN_TEAMS_TO_USERS :
try {
assignRemoveUserToTeams ( lrm , gcu , groupId , groupName , usersIDs , usersTeams , selfId , httpServletRequest ) ;
}
catch ( Exception e ) {
e . printStackTrace ( ) ;
}
break ;
default :
break ;
2019-11-07 13:45:40 +01:00
}
2021-05-13 12:17:25 +02:00
_log . info ( " User: " + currentUser . getUsername ( ) + " hes edited the roles of user: " + gcu . getUsername ( ) + " for the context: " + groupName ) ;
2019-11-07 13:45:40 +01:00
2021-05-13 12:17:25 +02:00
} //END EDIT ROLES for single user
2019-11-07 13:45:40 +01:00
2021-05-13 12:17:25 +02:00
else { //MULTIUSER ASSIGNMENT of Roles only and Groups/Sites add and removal
2021-05-13 12:29:34 +02:00
_log . info ( " MULTIUSER ASSIGNMENT type?= " + typeOfChangesUpponUserMode ) ;
2019-11-07 13:45:40 +01:00
List < GCubeTeam > existingGCubeTeams = lrm . listTeamsByGroup ( groupId ) ;
2021-05-13 12:17:25 +02:00
for ( long uid : usersIDs ) { //for each user
2019-11-07 13:45:40 +01:00
GCubeUser user = lum . getUserById ( uid ) ;
GCubeUser gcu = lum . getUserByUsername ( user . getUsername ( ) ) ;
2021-05-13 12:29:34 +02:00
_log . debug ( " iterating user: " + user . getUsername ( ) ) ;
2019-11-07 13:45:40 +01:00
List < GCubeUser > usersInTeam = new ArrayList < GCubeUser > ( ) ;
Set < Long > existingGCubeTeamsIDs = new HashSet < Long > ( ) ;
for ( GCubeTeam gCubeTeam : existingGCubeTeams ) {
try {
usersInTeam = lum . listUsersByTeam ( gCubeTeam . getTeamId ( ) ) ;
if ( usersInTeam . contains ( user ) ) {
existingGCubeTeamsIDs . add ( gCubeTeam . getTeamId ( ) ) ;
}
} catch ( TeamRetrievalFault e ) {
_log . debug ( " Failed to retrieve team with teamId: " + gCubeTeam . getTeamId ( ) ) ;
e . printStackTrace ( ) ;
}
}
long [ ] roleIDs = new long [ theRoles . length ] ;
GCubeRole [ ] gCubeRoles = new GCubeRole [ theRoles . length ] ;
long [ ] newRoleIDs = new long [ theRoles . length ] ;
for ( int i = 0 ; i < theRoles . length ; i + + ) {
gCubeRoles [ i ] = lrm . getRole ( theRoles [ i ] . trim ( ) , groupId ) ;
roleIDs [ i ] = gCubeRoles [ i ] . getRoleId ( ) ;
newRoleIDs [ i ] = gCubeRoles [ i ] . getRoleId ( ) ;
}
List < GCubeRole > oldRoles = lrm . listRolesByUserAndGroup ( usersIDs [ 0 ] , groupId ) ;
boolean rolesAssignmentSucceeded = lrm . assignRolesToUser ( gcu . getUserId ( ) , groupId , roleIDs ) ;
if ( rolesAssignmentSucceeded ) {
List < GCubeRole > rolesComingFromTheUI = gCubeRoles . length > 0 ? Arrays . asList ( gCubeRoles ) : new ArrayList < GCubeRole > ( ) ;
List < Long > roleIdsComingFromTheUICopy = new ArrayList < Long > ( ) ;
List < Long > roleIdsComingFromTheUI = new ArrayList < Long > ( ) ;
for ( long id : newRoleIDs ) {
roleIdsComingFromTheUI . add ( id ) ;
roleIdsComingFromTheUICopy . add ( id ) ;
}
List < Long > oldRoleIds = oldRoles . stream ( ) . map ( role - > new Long ( role . getRoleId ( ) ) ) . collect ( Collectors . toList ( ) ) ;
//new roles
roleIdsComingFromTheUI . removeAll ( oldRoleIds ) ;
List < GCubeRole > newRoles = new ArrayList < GCubeRole > ( rolesComingFromTheUI . stream ( ) . filter ( role - > roleIdsComingFromTheUI . contains ( role . getRoleId ( ) ) ) . collect ( Collectors . toList ( ) ) ) ;
2021-05-13 12:17:25 +02:00
if ( newRoles . size ( ) > 0 )
notifyUsersByEmailOnRoleAssignment ( groupId , gcu , lum . getUserById ( selfId ) , lgm . getGroup ( groupId ) , newRoles , httpServletRequest ) ;
2019-11-07 13:45:40 +01:00
}
List < Long > gCubeTeamIDs = new ArrayList < Long > ( ) ;
String [ ] gCubeTeamNames = new String [ usersTeams . length ] ;
StringBuffer teamNames = new StringBuffer ( ) ;
2021-05-13 12:29:34 +02:00
for ( int i = 0 ; i < usersTeams . length ; i + + ) {
2019-11-07 13:45:40 +01:00
GCubeTeam team = null ;
try {
team = lrm . getTeam ( groupId , usersTeams [ i ] . trim ( ) ) ;
gCubeTeamIDs . add ( team . getTeamId ( ) ) ;
gCubeTeamNames [ i ] = team . getTeamName ( ) ;
if ( i ! = usersTeams . length - 1 ) {
teamNames . append ( gCubeTeamNames [ i ] ) . append ( " , " ) ;
} else {
teamNames . append ( gCubeTeamNames [ i ] ) ;
}
_log . debug ( " Succeeded at retrieving team with name: " + usersTeams [ i ] . trim ( ) + " for the group: " + groupName ) ;
} catch ( TeamRetrievalFault e1 ) {
_log . debug ( " Failed at retrieving team with name: " + usersTeams [ i ] . trim ( ) + " for the group: " + groupName ) ;
e1 . printStackTrace ( ) ;
}
}
existingGCubeTeamsIDs . addAll ( gCubeTeamIDs ) ;
long [ ] gCubeTeamsIDsToBeAddedToTheUser = new long [ existingGCubeTeamsIDs . size ( ) ] ;
int i = 0 ;
2021-05-13 12:29:34 +02:00
for ( Long l : existingGCubeTeamsIDs ) {
2019-11-07 13:45:40 +01:00
gCubeTeamsIDsToBeAddedToTheUser [ i ] = l ;
i + + ;
}
try {
List < GCubeTeam > oldUserTeams = lrm . listTeamsByUserAndGroup ( gcu . getUserId ( ) , groupId ) ;
List < Long > oldUserTeamsIDs = new ArrayList < Long > ( ) ;
for ( Iterator < GCubeTeam > it = oldUserTeams . iterator ( ) ; it . hasNext ( ) ; ) {
GCubeTeam gct = it . next ( ) ;
oldUserTeamsIDs . add ( gct . getTeamId ( ) ) ;
}
List < GCubeTeam > newUserTeams = new ArrayList < GCubeTeam > ( ) ;
List < Long > newUserTeamsIDs = new ArrayList < Long > ( ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
for ( long gCubeTeamID : gCubeTeamIDs ) {
GCubeTeam gct = lrm . getTeam ( gCubeTeamID ) ;
newUserTeams . add ( gct ) ;
newUserTeamsIDs . add ( gCubeTeamID ) ;
}
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
List < GCubeTeam > newTeamsToBeAssociatedWith = new ArrayList < GCubeTeam > ( newUserTeams ) ;
List < Long > newTeamsIDsToBeAssociatedWith = new ArrayList < Long > ( newUserTeamsIDs ) ;
newUserTeams . removeAll ( oldUserTeams ) ;
newUserTeamsIDs . removeAll ( oldUserTeamsIDs ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
for ( Long gctID : newUserTeamsIDs ) {
lrm . assignTeamToUser ( gcu . getUserId ( ) , gctID ) ;
GCubeTeam gct = lrm . getTeam ( gctID ) ;
notifyUsersByEmailOnTeamAssignment ( groupId , gcu , lum . getUserById ( selfId ) , lgm . getGroup ( groupId ) , httpServletRequest , gct ) ;
}
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
if ( newUserTeamsIDs . size ( ) > 0 )
_log . debug ( " User: " + gcu . getUsername ( ) + " was added to following teams: " + teamNames ) ;
else
_log . debug ( " User: " + gcu . getUsername ( ) + " was added to no new teams " ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
oldUserTeams . removeAll ( newTeamsToBeAssociatedWith ) ;
oldUserTeamsIDs . removeAll ( newTeamsIDsToBeAssociatedWith ) ;
List < Long > teamsIDsToBeDisassociatedFrom = new ArrayList < Long > ( oldUserTeamsIDs ) ;
if ( teamsIDsToBeDisassociatedFrom . size ( ) ! = 0 ) {
List < GCubeTeam > teamsToBeDisassociatedFrom = new ArrayList < GCubeTeam > ( ) ;
for ( Iterator < Long > it = teamsIDsToBeDisassociatedFrom . iterator ( ) ; it . hasNext ( ) ; ) {
teamsToBeDisassociatedFrom . add ( lrm . getTeam ( it . next ( ) ) ) ;
}
}
} catch ( TeamRetrievalFault e ) {
_log . debug ( " User: " + gcu . getUsername ( ) + " failed to be added to the following teams: " + teamNames ) ;
e . printStackTrace ( ) ;
}
2021-05-13 12:17:25 +02:00
_log . debug ( " User: " + currentUser . getUsername ( ) + " is editing the roles or VRE groups of user: " + user . getUsername ( ) + " for the site: " + groupName ) ;
} //end for foreach user
2019-11-07 13:45:40 +01:00
}
return currentGroupUsers ( groupId , selfId , httpServletRequest ) ;
}
2021-05-13 12:29:34 +02:00
/ * *
*
* @param portletRequest
* @param request
* @param groupId
* @param userIDs
* @param membershipRequestsIDs
* @param sendDismissalEmail
* @throws SystemException
* @throws PortalException
* @throws UserManagementSystemException
* @throws UserRetrievalFault
* @throws GroupRetrievalFault
* /
2019-11-07 13:45:40 +01:00
protected void removeUsersFromGroup ( PortletRequest portletRequest , ResourceRequest request , long groupId , long [ ] userIDs ,
long [ ] membershipRequestsIDs , boolean sendDismissalEmail )
throws SystemException , PortalException , UserManagementSystemException ,
UserRetrievalFault , GroupRetrievalFault {
UserManager um = new LiferayUserManager ( ) ;
GroupManager gm = new LiferayGroupManager ( ) ;
RoleManager rm = new LiferayRoleManager ( ) ;
String groupName = gm . getGroup ( groupId ) . getGroupName ( ) ;
String groupNameForSubject = " " ;
//Email
if ( gm . isRootVO ( groupId ) ) {
groupNameForSubject + = " Virtual Organization " ;
groupName = " <b> " + groupName + " </b> Virtual Organization " ;
} else if ( gm . isVRE ( groupId ) ) {
groupNameForSubject + = " Virtual Research Environment " ;
groupName = " <b> " + groupName + " </b> Virtual Research Environment " ;
} else {
groupNameForSubject = groupName ;
_log . debug ( " isRootVO: " + gm . isRootVO ( groupId ) + " \ nisVRE: " + gm . isVRE ( groupId ) ) ;
}
HttpServletRequest httpServletRequest = PortalUtil . getHttpServletRequest ( request ) ;
String emailSubject = EmailPartsConstruction . subjectForUserDismissalFromSite (
" userDismissalFromSiteSubject " , groupNameForSubject ) ;
List < String > recipients = new ArrayList < String > ( ) ;
_log . debug ( " Dissmissing users from group: " + groupName ) ;
ArrayList < String > managersEmails = getVREManagersEmailsForGroup ( groupId ) ;
for ( int i = 0 ; i < userIDs . length ; i + + ) {
GCubeUser gcu = um . getUserById ( userIDs [ i ] ) ;
um . dismissUserFromGroup ( groupId , gcu . getUserId ( ) ) ;
if ( sendDismissalEmail ) {
String emailRecipient = gcu . getEmail ( ) ;
recipients . add ( emailRecipient ) ;
}
try {
try {
rm . removeAllRolesFromUser ( gcu . getUserId ( ) , groupId ) ;
_log . debug ( " Removing all roles from user succeeded " ) ;
} catch ( Exception e ) {
_log . debug ( " Removing all roles from user failed " ) ;
e . printStackTrace ( ) ;
}
try {
LiferayRoleManager lrm = new LiferayRoleManager ( ) ;
List < GCubeTeam > teams = lrm . listTeamsByGroup ( groupId ) ;
if ( teams . size ( ) > 0 ) {
lrm . deleteUserTeams ( gcu . getUserId ( ) , teams ) ;
_log . debug ( " Removing all groups from user succeeded " ) ;
}
} catch ( Exception e ) {
_log . debug ( " Removing all groups from user failed " ) ;
e . printStackTrace ( ) ;
}
GCubeMembershipRequest mr = um . getMembershipRequestsById ( membershipRequestsIDs [ i ] ) ;
if ( mr ! = null ) {
um . rejectMembershipRequest ( mr . getRequestingUser ( ) . getUserId ( ) , groupId , mr . getReplierUser ( ) . getUsername ( ) , mr . getManagerReplyComment ( ) ) ;
}
_log . debug ( " User: " + currentUser . getUsername ( ) + " dismissing the user: " + gcu . getUsername ( ) + " from the site: " + groupName ) ;
} catch ( UserManagementPortalException e ) {
_log . debug ( " Membership Request rejection failed " ) ;
e . printStackTrace ( ) ;
}
if ( sendDismissalEmail ) {
int recSize = managersEmails . size ( ) + 1 ;
Recipient [ ] recs = new Recipient [ recSize ] ;
recs [ 0 ] = new Recipient ( new EmailAddress ( gcu . getEmail ( ) ) , RecipientType . TO ) ;
if ( ! managersEmails . isEmpty ( ) ) {
int j = 1 ;
for ( String mEmail : managersEmails ) {
recs [ j ] = new Recipient ( new EmailAddress ( mEmail ) , RecipientType . BCC ) ;
j + + ;
}
}
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
TemplateUserHasBeenUnregisteredVRE requestAcceptedTemplate = new TemplateUserHasBeenUnregisteredVRE (
gcu , um . getUserById ( PortalUtil . getUserId ( httpServletRequest ) ) , gm . getGroup ( groupId ) ,
PortalContext . getConfiguration ( ) . getGatewayName ( httpServletRequest ) , PortalContext . getConfiguration ( ) . getGatewayURL ( httpServletRequest ) ) ;
EmailTemplateService . send ( emailSubject , ( org . gcube . common . portal . mailing . templates . Template ) requestAcceptedTemplate , httpServletRequest , recs ) ;
}
}
}
protected void currentUsersTableSection (
boolean currentUsersTable ,
boolean deleteUsersFromCurrentUsersTable ,
int modeCurrentUsersTable ,
long groupId ,
JSONObject jsonObject ,
PortletRequest portletRequest ,
ResourceRequest request , long selfId
) {
HttpServletRequest httpServletRequest = PortalUtil . getHttpServletRequest ( request ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
if ( currentUsersTable & & ! deleteUsersFromCurrentUsersTable ) {
if ( modeCurrentUsersTable = = REFRESH_CURRENT_USERS_TABLE ) {
try {
jsonObject . put ( " currentUsers " , currentGroupUsers ( groupId , selfId , httpServletRequest ) ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
e . printStackTrace ( ) ;
}
} else if ( modeCurrentUsersTable = = EDIT_CURRENT_USERS_TABLE ) { //edit
try {
long [ ] selectedUsers = ParamUtil . getLongValues ( portletRequest , " selectedUsers[] " ) ;
String [ ] usersRoles = ParamUtil . getParameterValues ( portletRequest , " usersRoles[] " ) ;
String [ ] usersTeams = ParamUtil . getParameterValues ( portletRequest , " usersTeams[] " ) ;
boolean deletePreviousRoles = ParamUtil . getBoolean ( portletRequest , " deletePreviousRoles " ) ;
int typeOfChangesUpponUserMode = ParamUtil . getInteger ( portletRequest , " typeOfChangesUpponUserMode " ) ;
jsonObject . put ( " currentUsers " , usersForCurrrentUsersTablePlusRoles ( groupId , selectedUsers , usersRoles ,
usersTeams , deletePreviousRoles , selfId ,
typeOfChangesUpponUserMode , request ) ) ;
} catch ( SystemException e ) {
e . printStackTrace ( ) ;
} catch ( PortalException e ) {
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( RoleRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
}
}
} else if ( currentUsersTable & & deleteUsersFromCurrentUsersTable ) { //delete
try {
long [ ] selectedUsers = ParamUtil . getLongValues ( portletRequest , " selectedUsers[] " ) ;
long [ ] membershipRequestsIDs = ParamUtil . getLongValues ( request , " membershipRequestsIDs[] " ) ;
boolean sendDismissalEmail = ParamUtil . getBoolean ( portletRequest , " sendDismissalEmail " ) ;
removeUsersFromGroup ( portletRequest , request , groupId , selectedUsers , membershipRequestsIDs , sendDismissalEmail ) ;
jsonObject . put ( " currentUsers " , currentGroupUsers ( groupId , selfId , httpServletRequest ) ) ;
} catch ( SystemException e ) {
e . printStackTrace ( ) ;
} catch ( PortalException e ) {
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
}
}
}
protected void membershipRequestsSection (
boolean fetchUsersRequests , int modeMembershipRequestsTable ,
JSONObject jsonObject , ResourceRequest request ,
PortletRequest portletRequest , long groupId ,
HttpServletRequest httpServletRequest ) {
if ( fetchUsersRequests ) {
if ( modeMembershipRequestsTable = = REFRESH_MEMBERSHIP_REQUESTS_TABLE ) { //Refresh
try {
jsonObject . put ( " currentUsersRequests " , currentGroupUsersRequests ( groupId , httpServletRequest ) ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
e . printStackTrace ( ) ;
}
} else if ( modeMembershipRequestsTable = = APPROVE_MEMBERSHIP_REQUESTS_TABLE ) { //Accept
try {
long [ ] reqIDs = ParamUtil . getLongValues ( portletRequest , " membershipRequestsIds[] " ) ;
Long managerId = ParamUtil . getLong ( request , " managerId " ) ;
acceptMemebershipRequestAndAddUsersToGroup ( portletRequest , request , reqIDs , groupId , managerId ) ;
jsonObject . put ( " currentUsersRequests " , currentGroupUsersRequests ( groupId , httpServletRequest ) ) ;
} catch ( SystemException e ) {
e . printStackTrace ( ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( NumberFormatException e ) {
e . printStackTrace ( ) ;
} catch ( PortalException e ) {
e . printStackTrace ( ) ;
}
} else if ( modeMembershipRequestsTable = = REJECT_MEMBERSHIP_REQUESTS_TABLE ) { //Reject
try {
long [ ] reqIDs = ParamUtil . getLongValues ( portletRequest , " membershipRequestsIds[] " ) ;
Long managerId = ParamUtil . getLong ( request , " managerId " ) ;
boolean CustomRejectionEmailFromAdmin = ParamUtil . getBoolean ( request , " CustomRejectionEmailFromAdmin " ) ;
String CustomRejectionEmailBodyFromAdmin = ParamUtil . getString ( request , " CustomRejectionEmailBodyFromAdmin " ) ;
_log . debug ( CustomRejectionEmailFromAdmin + " " + CustomRejectionEmailBodyFromAdmin ) ;
rejectMembershipRequests ( portletRequest , request , reqIDs , groupId , managerId , CustomRejectionEmailFromAdmin , CustomRejectionEmailBodyFromAdmin ) ;
jsonObject . put ( " currentUsersRequests " , currentGroupUsersRequests ( groupId , httpServletRequest ) ) ;
} catch ( NumberFormatException e ) {
e . printStackTrace ( ) ;
} catch ( SystemException e ) {
e . printStackTrace ( ) ;
} catch ( PortalException e ) {
e . printStackTrace ( ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
e . printStackTrace ( ) ;
}
}
}
}
protected void rejectedMembershipRequestsSection (
boolean fetchUsersRejectedRequests ,
JSONObject jsonObject ,
ResourceRequest request , PortletRequest portletRequest ,
long groupId , HttpServletRequest httpServletRequest ) {
if ( fetchUsersRejectedRequests ) { //Rejected
try {
jsonObject . put ( " currentUsersRequests " , currentGroupRejectedUsersRequests ( groupId , httpServletRequest ) ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( NumberFormatException e ) {
e . printStackTrace ( ) ;
}
}
}
protected void countUsersMembershipRequestsSection (
boolean countUsersMembershipRequests ,
JSONObject jsonObject , long groupId ) {
if ( countUsersMembershipRequests ) {
try {
jsonObject . put ( " countUsersMembershipRequests " , numberOfRequestsForSpecificGroup ( groupId ) ) ;
} catch ( PortalException e ) {
e . printStackTrace ( ) ;
} catch ( SystemException e ) {
e . printStackTrace ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
} catch ( GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
} catch ( UserRetrievalFault e ) {
e . printStackTrace ( ) ;
}
}
}
protected void siteTeamsForTheCurrentGroupSection ( ResourceRequest request , long managerID , int modeSiteTeams , long groupId , JSONObject jsonObject ) throws SystemException {
HttpServletRequest httpServletRequest = PortalUtil . getHttpServletRequest ( request ) ;
RoleManager rm = new LiferayRoleManager ( ) ;
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
String groupName = " " ;
try {
groupName = lgm . getGroup ( groupId ) . getGroupName ( ) ;
} catch ( UserManagementSystemException | GroupRetrievalFault e2 ) {
e2 . printStackTrace ( ) ;
}
if ( modeSiteTeams = = REFRESH_SITE_TEAMS_TABLE ) {
fetchSiteTeams ( groupId , jsonObject , PortalUtil . getHttpServletRequest ( request ) ) ;
} else if ( modeSiteTeams = = EDIT_SITE_TEAMS_TABLE ) {
long siteTeamID = ParamUtil . getLong ( request , " siteTeamID " ) ;
String siteTeamName = ParamUtil . getString ( request , " siteTeamName " ) ;
String siteTeamDescription = ParamUtil . getString ( request , " siteTeamDescription " ) ;
_log . debug ( " Editing teams for group: " + groupName + " ... " ) ;
try {
String teamName = rm . getTeam ( siteTeamID ) . getTeamName ( ) ;
try {
rm . updateTeam ( siteTeamID , siteTeamName , siteTeamDescription ) ;
} catch ( TeamRetrievalFault e ) {
e . printStackTrace ( ) ;
}
_log . debug ( " Edited team: " + teamName + " to Team Name: " + siteTeamName + " and Team Description: " + siteTeamDescription ) ;
} catch ( UserManagementSystemException e1 ) {
e1 . printStackTrace ( ) ;
} catch ( TeamRetrievalFault e1 ) {
e1 . printStackTrace ( ) ;
}
fetchSiteTeams ( groupId , jsonObject , httpServletRequest ) ;
} else if ( modeSiteTeams = = SITE_TEAMS_TABLE_CREATE_GROUP ) {
String siteTeamName = ParamUtil . getString ( request , " siteTeamName " ) ;
String siteTeamDescription = ParamUtil . getString ( request , " siteTeamDescription " ) ;
long adminUserId = currentUser . getUserId ( ) ;
_log . debug ( " Create team for group: " + groupName + " ... " ) ;
try {
rm . createTeam ( adminUserId , groupId , siteTeamName , siteTeamDescription ) ;
_log . debug ( " Added team with Name: " + siteTeamName + " and Team Description: " + siteTeamDescription ) ;
} catch ( GroupRetrievalFault | TeamRetrievalFault | UserManagementSystemException e ) {
e . printStackTrace ( ) ;
}
fetchSiteTeams ( groupId , jsonObject , httpServletRequest ) ;
}
else if ( modeSiteTeams = = DELETE_SITE_TEAMS_TABLE ) {
long siteTeamID = ParamUtil . getLong ( request , " siteTeamID " ) ;
String teamName ;
try {
teamName = rm . getTeam ( siteTeamID ) . getTeamName ( ) ;
rm . deleteTeam ( siteTeamID ) ;
_log . debug ( " Deleted team with Name: " + teamName ) ;
} catch ( UserManagementSystemException | TeamRetrievalFault e ) {
e . printStackTrace ( ) ;
}
fetchSiteTeams ( groupId , jsonObject , httpServletRequest ) ;
}
}
void fetchSiteTeams ( long groupId , JSONObject jsonObject , HttpServletRequest httpServletRequest ) {
GroupManager gm = new LiferayGroupManager ( ) ;
RoleManager rm = new LiferayRoleManager ( ) ;
UserManager um = new LiferayUserManager ( ) ;
List < GCubeTeam > currentGroupTeams = new ArrayList < GCubeTeam > ( ) ;
try {
currentGroupTeams = rm . listTeamsByGroup ( groupId ) ;
} catch ( GroupRetrievalFault e2 ) {
e2 . printStackTrace ( ) ;
}
JSONArray ja = JSONFactoryUtil . createJSONArray ( ) ;
SimpleDateFormat dateFormat = new SimpleDateFormat ( " dd-MMM-yyyy " , httpServletRequest . getLocale ( ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
for ( GCubeTeam siteTeam : currentGroupTeams ) {
JSONObject jo = JSONFactoryUtil . createJSONObject ( ) ;
String siteTeamName = siteTeam . getTeamName ( ) ;
siteTeamName = siteTeamName . replace ( " ' " , " ' " ) ; //Escaping single quote char
jo . put ( " Name " , siteTeamName ) ;
jo . put ( " Description " , siteTeam . getDescription ( ) ) ;
jo . put ( " CreationDate " , dateFormat . format ( siteTeam . getCreatedate ( ) ) ) ;
jo . put ( " CreationDateObject " , siteTeam . getCreatedate ( ) ) ;
jo . put ( " LastModificationDate " , dateFormat . format ( siteTeam . getModifiedDate ( ) ) ) ;
jo . put ( " LastModificationDateObject " , siteTeam . getModifiedDate ( ) ) ;
int numberOfUsersInTeam = 0 ;
List < GCubeUser > teamUsers = new ArrayList < GCubeUser > ( ) ;
try {
teamUsers = um . listUsersByTeam ( siteTeam . getTeamId ( ) ) ;
numberOfUsersInTeam = teamUsers . size ( ) ;
} catch ( UserManagementSystemException | TeamRetrievalFault | UserRetrievalFault e ) {
e . printStackTrace ( ) ;
}
jo . put ( " NumberOfUsers " , numberOfUsersInTeam ) ;
jo . put ( " TeamID " , siteTeam . getTeamId ( ) ) ;
JSONArray ja1 = JSONFactoryUtil . createJSONArray ( ) ;
List < GCubeUser > users = new ArrayList < GCubeUser > ( ) ;
try {
users = um . listUsersByGroup ( groupId ) ;
} catch ( UserManagementSystemException | GroupRetrievalFault | UserRetrievalFault e1 ) {
e1 . printStackTrace ( ) ;
}
for ( GCubeUser u : users ) {
JSONObject jo1 = JSONFactoryUtil . createJSONObject ( ) ;
try {
if ( teamUsers . contains ( u ) ) {
jo1 . put ( " fullName " , u . getFullname ( ) ) ;
jo1 . put ( " screenName " , u . getUsername ( ) ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
ja1 . put ( jo1 ) ;
}
jo . put ( " siteTeamUsers " , ja1 ) ;
try {
jo . put ( " CreatorName " , um . getUserById ( siteTeam . getUserId ( ) ) . getFullname ( ) ) ;
} catch ( UserManagementSystemException | UserRetrievalFault e ) {
jo . put ( " CreatorName " , " " ) ;
e . printStackTrace ( ) ;
}
ja . put ( jo ) ;
}
jsonObject . put ( " siteTeams " , ja ) ;
String groupname = null ;
try {
groupname = gm . getGroup ( groupId ) . getGroupName ( ) ;
} catch ( UserManagementSystemException | GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
}
_log . debug ( " Retrieving teams for the site: " + groupname ) ;
}
void fetchRolesNames ( long groupId , JSONObject jsonObject ) {
LiferayRoleManager lrm = new LiferayRoleManager ( ) ;
List < GCubeRole > rolesList = lrm . listAllGroupRoles ( ) ;
JSONArray ja = JSONFactoryUtil . createJSONArray ( ) ;
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
String groupName = " " ;
try {
groupName = lgm . getGroup ( groupId ) . getGroupName ( ) ;
} catch ( UserManagementSystemException | GroupRetrievalFault e ) {
e . printStackTrace ( ) ;
}
_log . debug ( " Fetching roles for group: " + groupName + " ... " ) ;
for ( GCubeRole role : rolesList ) {
ja . put ( role . getRoleName ( ) ) ;
}
jsonObject . put ( " roleNames " , ja ) ;
}
void fetchTeamsNames ( long groupId , JSONObject jsonObject ) throws GroupRetrievalFault {
LiferayRoleManager lrm = new LiferayRoleManager ( ) ;
List < GCubeTeam > teamsList = lrm . listTeamsByGroup ( groupId ) ;
JSONArray ja = JSONFactoryUtil . createJSONArray ( ) ;
LiferayGroupManager lgm = new LiferayGroupManager ( ) ;
String groupName = " " ;
try {
groupName = lgm . getGroup ( groupId ) . getGroupName ( ) ;
} catch ( UserManagementSystemException e ) {
e . printStackTrace ( ) ;
}
_log . debug ( " Fetching teams for group: " + groupName + " ... " ) ;
for ( GCubeTeam team : teamsList ) {
ja . put ( team . getTeamName ( ) ) ;
}
jsonObject . put ( " teamNames " , ja ) ;
}
private ArrayList < String > getVREManagersEmailsForGroup ( Long groupId ) {
UserManager um = new LiferayUserManager ( ) ;
ArrayList < String > managersEmails = new ArrayList < String > ( ) ;
Map < GCubeUser , List < GCubeRole > > usersAndRoles = null ;
try {
usersAndRoles = um . listUsersAndRolesByGroup ( groupId ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
Set < GCubeUser > users = usersAndRoles . keySet ( ) ;
for ( GCubeUser usr : users ) {
List < GCubeRole > roles = usersAndRoles . get ( usr ) ;
for ( int i = 0 ; i < roles . size ( ) ; i + + ) {
if ( roles . get ( i ) . getRoleName ( ) . equals ( " VRE-Manager " ) | | roles . get ( i ) . getRoleName ( ) . equals ( " VO-Admin " ) ) {
managersEmails . add ( usr . getEmail ( ) ) ;
_log . debug ( " VRE Manager email -> " + usr . getEmail ( ) ) ;
break ;
}
}
}
return managersEmails ;
}
String getUserRequestRejectionEmailSubject ( String gatewayNameForSubject , String groupNameForSubject ) {
String emailSubject = EmailPartsConstruction . subjectForMembershipRequestAcceptanceOrRejection (
" membershipRequestRejectionSubject " , groupNameForSubject ) ;
return emailSubject ;
}
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
public void notifyUsersByEmailOnTeamAssignment (
long groupId , GCubeUser gcu , GCubeUser manager , GCubeGroup group ,
HttpServletRequest httpServletRequest , GCubeTeam team ) {
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
_log . debug ( " notifyUsersByEmailOnTeamAssignment for user: " + gcu . getUsername ( ) + " for team: " + team . getTeamName ( ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
ArrayList < String > managersEmails = getVREManagersEmailsForGroup ( groupId ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
int recSize = managersEmails . size ( ) + 1 ;
Recipient [ ] recs = new Recipient [ recSize ] ;
recs [ 0 ] = new Recipient ( new EmailAddress ( gcu . getEmail ( ) ) , RecipientType . TO ) ;
if ( ! managersEmails . isEmpty ( ) ) {
int i = 1 ;
for ( String mEmail : managersEmails ) {
recs [ i ] = new Recipient ( new EmailAddress ( mEmail ) , RecipientType . BCC ) ;
i + + ;
}
}
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
String properEmailSubject = EmailPartsConstruction . getSiteTeamAssignmentSubject ( team . getTeamName ( ) ) ;
TemplateUserHasBeenAssociatedWithGCubeTeam requestTeamAssignmentTemplate = new TemplateUserHasBeenAssociatedWithGCubeTeam (
group , team , gcu ,
manager , new Date ( ) ,
PortalContext . getConfiguration ( ) . getGatewayName ( httpServletRequest ) , PortalContext . getConfiguration ( ) . getGatewayURL ( httpServletRequest ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
_log . debug ( " Sending email to user: " + gcu . getUsername ( ) + " . He is being assigned to group: " + team . getTeamName ( ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
EmailTemplateService . send ( properEmailSubject , ( org . gcube . common . portal . mailing . templates . Template ) requestTeamAssignmentTemplate , httpServletRequest , recs ) ;
}
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
public void notifyUsersByEmailOnTeamDismissal (
long groupId , GCubeUser gcu , GCubeUser manager , GCubeGroup group ,
HttpServletRequest httpServletRequest , GCubeTeam team ) {
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
_log . debug ( " notifyUsersByEmailOnTeamDismissal for user: " + gcu . getUsername ( ) + " for team: " + team . getTeamName ( ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
ArrayList < String > managersEmails = getVREManagersEmailsForGroup ( groupId ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
int recSize = managersEmails . size ( ) + 1 ;
Recipient [ ] recs = new Recipient [ recSize ] ;
recs [ 0 ] = new Recipient ( new EmailAddress ( gcu . getEmail ( ) ) , RecipientType . TO ) ;
if ( ! managersEmails . isEmpty ( ) ) {
int i = 1 ;
for ( String mEmail : managersEmails ) {
recs [ i ] = new Recipient ( new EmailAddress ( mEmail ) , RecipientType . BCC ) ;
i + + ;
}
}
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
String properEmailSubject = EmailPartsConstruction . getSiteTeamDismissalSubject ( team . getTeamName ( ) ) ;
TemplateUserHasBeenDissAssociatedWithGCubeTeam requestTeamDismissalTemplate = new TemplateUserHasBeenDissAssociatedWithGCubeTeam (
group , team , gcu ,
manager , new Date ( ) ,
PortalContext . getConfiguration ( ) . getGatewayName ( httpServletRequest ) , PortalContext . getConfiguration ( ) . getGatewayURL ( httpServletRequest ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
_log . debug ( " Sending email to user: " + gcu . getUsername ( ) + " . He is being removed from group: " + team . getTeamName ( ) ) ;
2021-05-13 12:17:25 +02:00
2019-11-07 13:45:40 +01:00
EmailTemplateService . send ( properEmailSubject , ( org . gcube . common . portal . mailing . templates . Template ) requestTeamDismissalTemplate , httpServletRequest , recs ) ;
}
2021-05-13 12:17:25 +02:00
/ * *
*
* @param groupId
* @param userToReceiveTheMail
* @param manager
* @param group
* @param newRoles
* @param httpServletRequest
* @throws UserManagementSystemException
* @throws GroupRetrievalFault
* /
2021-05-13 18:03:53 +02:00
public void notifyUsersByEmailOnRoleAssignment (
long groupId , GCubeUser userToReceiveTheMail ,
GCubeUser manager , GCubeGroup group , List < GCubeRole > newRoles ,
HttpServletRequest httpServletRequest ) throws UserManagementSystemException , GroupRetrievalFault {
2021-05-13 12:17:25 +02:00
_log . debug ( " Notifying user by email on role assignment for user: " + userToReceiveTheMail . getUsername ( ) + " for context name: " + group . getGroupName ( ) ) ;
2021-05-13 18:03:53 +02:00
String gatewayName = PortalContext . getConfiguration ( ) . getGatewayName ( httpServletRequest ) ;
String gatewayURL = PortalContext . getConfiguration ( ) . getGatewayURL ( httpServletRequest ) ;
//send email to the assignee
String properEmailSubject = EmailPartsConstruction . getRoleAssignmentRevokeSubject ( new LiferayGroupManager ( ) . getGroup ( groupId ) . getGroupName ( ) ) ;
TemplateUserRolesModifiedForGroup templateUserRolesModifiedForGroup =
new TemplateUserRolesModifiedForGroup ( gatewayName , gatewayURL ,
group , userToReceiveTheMail , manager , newRoles , new ArrayList < > ( ) , new Date ( ) ) ;
2019-11-07 13:45:40 +01:00
2021-05-13 18:03:53 +02:00
_log . info ( " Sending email to user: " + userToReceiveTheMail . getUsername ( ) + " . His roles have been modified within the context of VRE: " + group . getGroupName ( ) ) ;
EmailTemplateService . send ( properEmailSubject , ( org . gcube . common . portal . mailing . templates . Template ) templateUserRolesModifiedForGroup , httpServletRequest , new Recipient ( userToReceiveTheMail . getEmail ( ) ) ) ;
String [ ] theRoles = new String [ newRoles . size ( ) ] ;
int i = 0 ;
for ( GCubeRole role : newRoles ) {
theRoles [ i ] = role . getRoleName ( ) ;
i + + ;
}
//send email to the manager
ArrayList < String > managersEmails = getVREManagersEmailsForGroup ( groupId ) ;
_log . info ( " Sending email to VRE Managers about user: " + userToReceiveTheMail . getUsername ( ) + " . His roles have been modified within the context of VRE: " + group . getGroupName ( ) ) ;
String managersEmailSubject = " Roles assignment notification on " + group . getGroupName ( ) ;
2019-11-07 13:45:40 +01:00
if ( ! managersEmails . isEmpty ( ) ) {
for ( String mEmail : managersEmails ) {
2021-05-13 18:03:53 +02:00
TemplateManagerHasAssignedRoles managersTemplate =
new TemplateManagerHasAssignedRoles (
userToReceiveTheMail ,
manager . getFullname ( ) ,
group . getGroupName ( ) ,
theRoles ,
gatewayName ,
gatewayURL ) ;
EmailTemplateService . send ( managersEmailSubject , managersTemplate , httpServletRequest , new Recipient ( mEmail ) ) ;
2019-11-07 13:45:40 +01:00
}
}
2021-05-13 12:17:25 +02:00
}
2021-05-13 18:03:53 +02:00
2021-05-13 12:17:25 +02:00
/ * *
*
* @param groupId
* @param userToReceiveTheMail
* @param manager
* @param group
* @param revokeRoles
* @param httpServletRequest
* @throws UserManagementSystemException
* @throws GroupRetrievalFault
* /
public void notifyUsersByEmailOnRoleRevokation ( long groupId , GCubeUser userToReceiveTheMail , GCubeUser manager , GCubeGroup group , List < GCubeRole > revokeRoles , HttpServletRequest httpServletRequest ) throws UserManagementSystemException , GroupRetrievalFault {
_log . debug ( " Notifying user by email on role revokation for user: " + userToReceiveTheMail . getUsername ( ) + " for context name: " + group . getGroupName ( ) ) ;
2021-05-13 18:03:53 +02:00
String gatewayName = PortalContext . getConfiguration ( ) . getGatewayName ( httpServletRequest ) ;
String gatewayURL = PortalContext . getConfiguration ( ) . getGatewayURL ( httpServletRequest ) ;
//send email to the assignee
String properEmailSubject = EmailPartsConstruction . getRoleAssignmentRevokeSubject ( new LiferayGroupManager ( ) . getGroup ( groupId ) . getGroupName ( ) ) ;
TemplateUserRolesModifiedForGroup templateUserRolesModifiedForGroup =
new TemplateUserRolesModifiedForGroup ( gatewayName , gatewayURL ,
2021-05-13 18:11:38 +02:00
group , userToReceiveTheMail , manager , new ArrayList < > ( ) , revokeRoles , new Date ( ) ) ;
2019-11-07 13:45:40 +01:00
2021-05-13 18:03:53 +02:00
_log . info ( " Sending email to user: " + userToReceiveTheMail . getUsername ( ) + " . His roles have been modified within the context of VRE: " + group . getGroupName ( ) ) ;
EmailTemplateService . send ( properEmailSubject , ( org . gcube . common . portal . mailing . templates . Template ) templateUserRolesModifiedForGroup , httpServletRequest , new Recipient ( userToReceiveTheMail . getEmail ( ) ) ) ;
String [ ] theRoles = new String [ revokeRoles . size ( ) ] ;
int i = 0 ;
for ( GCubeRole role : revokeRoles ) {
theRoles [ i ] = role . getRoleName ( ) ;
i + + ;
}
//send email to the manager
ArrayList < String > managersEmails = getVREManagersEmailsForGroup ( groupId ) ;
_log . info ( " Sending email to VRE Managers about user: " + userToReceiveTheMail . getUsername ( ) + " . His roles have been modified within the context of VRE: " + group . getGroupName ( ) ) ;
String managersEmailSubject = " Revoked roles notification on " + group . getGroupName ( ) ;
2021-05-13 12:17:25 +02:00
if ( ! managersEmails . isEmpty ( ) ) {
for ( String mEmail : managersEmails ) {
2021-05-13 18:03:53 +02:00
TemplateManagerHasRevokedRoles managersTemplate =
new TemplateManagerHasRevokedRoles (
userToReceiveTheMail ,
manager . getFullname ( ) ,
group . getGroupName ( ) ,
theRoles ,
gatewayName ,
gatewayURL ) ;
EmailTemplateService . send ( managersEmailSubject , managersTemplate , httpServletRequest , new Recipient ( mEmail ) ) ;
2021-05-13 12:17:25 +02:00
}
}
2019-11-07 13:45:40 +01:00
}
}