From bc5f309fc551d521b790f612e0d28e21555bd343 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Thu, 13 May 2021 12:17:25 +0200 Subject: [PATCH] alpha test is passed --- .settings/org.eclipse.wst.common.component | 12 +- .../UsersManagementPortletHome.java | 468 ++++++++++-------- src/main/webapp/js/Toolbar.js | 2 +- src/main/webapp/js/tableEvents.js | 67 +-- 4 files changed, 314 insertions(+), 235 deletions(-) diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 3913854..78e0b29 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,10 +1,18 @@ - + + + + + + - + + + + diff --git a/src/main/java/gr/cite/bluebridge/portlets/admin/usersmanagementportlet/UsersManagementPortletHome.java b/src/main/java/gr/cite/bluebridge/portlets/admin/usersmanagementportlet/UsersManagementPortletHome.java index 3761093..36f7173 100644 --- a/src/main/java/gr/cite/bluebridge/portlets/admin/usersmanagementportlet/UsersManagementPortletHome.java +++ b/src/main/java/gr/cite/bluebridge/portlets/admin/usersmanagementportlet/UsersManagementPortletHome.java @@ -2,8 +2,14 @@ package gr.cite.bluebridge.portlets.admin.usersmanagementportlet; import java.io.IOException; import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collector; +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; import java.util.stream.Collectors; import javax.portlet.GenericPortlet; @@ -16,15 +22,14 @@ import javax.portlet.ResourceRequest; import javax.portlet.ResourceResponse; import javax.servlet.http.HttpServletRequest; -import gr.cite.bluebridge.portlets.admin.usersmanagementportlet.mail.templates.TemplateUserRolesModifiedForGroup; import org.gcube.common.portal.PortalContext; +import org.gcube.portal.mailing.message.EmailAddress; +import org.gcube.portal.mailing.message.Recipient; +import org.gcube.portal.mailing.message.RecipientType; import org.gcube.portal.mailing.service.EmailTemplateService; import org.gcube.portal.mailing.templates.TemplateUserApprovedRequestVRE; import org.gcube.portal.mailing.templates.TemplateUserHasBeenUnregisteredVRE; import org.gcube.portal.mailing.templates.TemplateUserRejectedRequestVRE; -import org.gcube.portal.mailing.message.EmailAddress; -import org.gcube.portal.mailing.message.Recipient; -import org.gcube.portal.mailing.message.RecipientType; import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.RoleManager; import org.gcube.vomanagement.usermanagement.UserManager; @@ -57,6 +62,7 @@ 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; +import gr.cite.bluebridge.portlets.admin.usersmanagementportlet.mail.templates.TemplateUserRolesModifiedForGroup; public class UsersManagementPortletHome extends GenericPortlet { protected String viewTemplate; @@ -72,11 +78,10 @@ public class UsersManagementPortletHome extends GenericPortlet { 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 MASS_EDIT_USERS = 0; private static final int ASSIGN_ROLES_TO_USERS = 1; private static final int REMOVE_ROLES_TO_USERS = 3; private static final int ASSIGN_TEAMS_TO_USERS = 2; - + public void init() { viewTemplate = getInitParameter("view-template"); } @@ -385,14 +390,14 @@ public class UsersManagementPortletHome extends GenericPortlet { if(users.size() > 0){ SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", httpServletRequest.getLocale()); - + _log.debug("There are " + users.size() + " users in the group: " + groupName); for(GCubeUser someUser : users){ JSONObject jo = JSONFactoryUtil.createJSONObject(); try{ List gcmrs = lm.getMembershipRequests(someUser.getUserId(), groupId, MembershipRequestStatus.APPROVED); GCubeMembershipRequest mr = gcmrs.get(gcmrs.size()-1); - + jo.put("requestDate", dateFormat.format(mr.getCreateDate())); jo.put("RequestDateObject", mr.getCreateDate()); jo.put("validationDate", dateFormat.format(mr.getReplyDate())); @@ -458,7 +463,7 @@ public class UsersManagementPortletHome extends GenericPortlet { _log.debug(reqs.size() + " requests for: " + groupName); if(reqs.size() > 0) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", httpServletRequest.getLocale()); - + for(GCubeMembershipRequest gcmr : reqs){ if(gcmr.getStatus() == MembershipRequestStatus.REQUEST){ JSONObject jo = JSONFactoryUtil.createJSONObject(); @@ -509,7 +514,7 @@ public class UsersManagementPortletHome extends GenericPortlet { _log.debug("Displaying rejected membership requests for the group: " + groupName); try{ SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", httpServletRequest.getLocale()); - + reqs = lm.listMembershipRequestsByGroup(groupId); if(reqs.size() > 0){ for(GCubeMembershipRequest gcmr : reqs){ @@ -545,30 +550,143 @@ public class UsersManagementPortletHome extends GenericPortlet { return ja; } + /** + * manage the assignment to teams + * @param groupId + * @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 oldUserTeams = lrm.listTeamsByUserAndGroup(gcu.getUserId(), groupId); + List oldUserTeamsIDs = new ArrayList(); + for(Iterator it = oldUserTeams.iterator(); it.hasNext();) { + GCubeTeam gct = it.next(); + oldUserTeamsIDs.add(gct.getTeamId()); + } + List newUserTeams = new ArrayList(); + List newUserTeamsIDs = new ArrayList(); + + for(long gCubeTeamID : gCubeTeamIDs) { + GCubeTeam gct = lrm.getTeam(gCubeTeamID); + newUserTeams.add(gct); + newUserTeamsIDs.add(gCubeTeamID); + } + + List newTeamsToBeAssociatedWith = new ArrayList(newUserTeams); + List newTeamsIDsToBeAssociatedWith = new ArrayList(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 teamsIDsToBeDisassociatedFrom = new ArrayList(oldUserTeamsIDs); + if(teamsIDsToBeDisassociatedFrom.size() != 0) { + List teamsToBeDisassociatedFrom = new ArrayList(); + for(Iterator 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(); + } + } + /** + * + * @param groupId + * @param usersIDs + * @param theRoles + * @param usersTeams + * @param deletePreviousRoles + * @param selfId + * @param typeOfChangesUpponUserMode + * @param request + * @return + * @throws SystemException + * @throws PortalException + * @throws UserManagementSystemException + * @throws UserRetrievalFault + * @throws RoleRetrievalFault + * @throws GroupRetrievalFault + */ 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{ - LiferayGroupManager lgm = new LiferayGroupManager(); - String groupName = lgm.getGroup(groupId).getGroupName(); + + LiferayGroupManager lgm = new LiferayGroupManager(); LiferayRoleManager lrm = new LiferayRoleManager(); LiferayUserManager lum = new LiferayUserManager(); - + String groupName = lgm.getGroup(groupId).getGroupName(); + HttpServletRequest httpServletRequest = PortalUtil.getHttpServletRequest(request); - - _log.debug("*** \n\n Editing users for the context: " + groupName); - System.out.println("\n\n****"); - System.out.println("long[] usersIDs="+usersIDs.toString()); - System.out.println("String[] theRoles="+theRoles.toString()); - System.out.println("deletePreviousRoles?="+deletePreviousRoles); - System.out.println("selfId="+selfId); - System.out.println("int typeOfChangesUpponUserMode is="+typeOfChangesUpponUserMode); - - System.out.println("usersIDs.length="+usersIDs.length); - - if(usersIDs.length == 1) {//You can delete previous roles of a single user only. + + _log.debug("Editing users for the context: " + groupName); + + + _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]); + } + _log.debug("Number of operation ((1:assign role, 2: assign/remove group, 3:revoke role) is ="+typeOfChangesUpponUserMode); + _log.debug("usersIDs.length="+usersIDs.length); + + if(usersIDs.length == 1) {// SINGLE USER EDIT, support assignment and removal of roles and groups GCubeUser gcu = lum.getUserById(usersIDs[0]); long[] roleIDs = new long[theRoles.length]; GCubeRole[] gCubeRoles = new GCubeRole[theRoles.length]; @@ -581,140 +699,65 @@ public class UsersManagementPortletHome extends GenericPortlet { newRoleIDs[i] = gCubeRoles[i].getRoleId(); } - if(typeOfChangesUpponUserMode == REMOVE_ROLES_TO_USERS){ - System.out.println("\n\n\n ****** REMOVE_ROLES_TO_USERS"); - - } - else if(typeOfChangesUpponUserMode == ASSIGN_ROLES_TO_USERS){ - _log.info("\n\n\n ****** ASSIGN_ROLES_TO_USERS"); - try{ - lrm.removeAllRolesFromUser(gcu.getUserId(), groupId); - }catch(Exception e){ - e.printStackTrace(); - } - } else if(deletePreviousRoles && typeOfChangesUpponUserMode == ASSIGN_TEAMS_TO_USERS){ - _log.debug("ASSIGN_TEAMS_TO_USERS"); + List rolesComingFromTheUI = gCubeRoles.length > 0 ? Arrays.asList(gCubeRoles) : new ArrayList(); + _log.info("roles Coming From The UI"); + rolesComingFromTheUI.forEach(role -> _log.info("Role UI: " + role.getRoleName())); + List roleIdsComingFromTheUICopy = new ArrayList(); + List roleIdsComingFromTheUI = new ArrayList(); + for(long id : newRoleIDs) { + roleIdsComingFromTheUI.add(id); + roleIdsComingFromTheUICopy.add(id); } - long[] gCubeTeamIDs = new long[usersTeams.length]; - String[] gCubeTeamNames = new String[usersTeams.length]; - StringBuffer teamNames = new StringBuffer(); - - for (int i=0; i oldUserTeams = lrm.listTeamsByUserAndGroup(gcu.getUserId(), groupId); - List oldUserTeamsIDs = new ArrayList(); - for(Iterator it = oldUserTeams.iterator(); it.hasNext();) { - GCubeTeam gct = it.next(); - oldUserTeamsIDs.add(gct.getTeamId()); - } - List newUserTeams = new ArrayList(); - List newUserTeamsIDs = new ArrayList(); - - for(long gCubeTeamID : gCubeTeamIDs) { - GCubeTeam gct = lrm.getTeam(gCubeTeamID); - newUserTeams.add(gct); - newUserTeamsIDs.add(gCubeTeamID); - } - - List newTeamsToBeAssociatedWith = new ArrayList(newUserTeams); - List newTeamsIDsToBeAssociatedWith = new ArrayList(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 teamsIDsToBeDisassociatedFrom = new ArrayList(oldUserTeamsIDs); - if(teamsIDsToBeDisassociatedFrom.size() != 0) { - List teamsToBeDisassociatedFrom = new ArrayList(); - for(Iterator 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(); - } - - boolean rolesAssignmentSucceeded = lrm.assignRolesToUser(gcu.getUserId(), groupId, roleIDs); - - if(rolesAssignmentSucceeded) { - List rolesComingFromTheUI = gCubeRoles.length > 0 ? Arrays.asList(gCubeRoles) : new ArrayList(); - _log.info("rolesComingFromTheUI"); - rolesComingFromTheUI.forEach(role -> _log.info("Role UI: " + role.getRoleName())); - List roleIdsComingFromTheUICopy = new ArrayList(); - List roleIdsComingFromTheUI = new ArrayList(); - for(long id : newRoleIDs) { - roleIdsComingFromTheUI.add(id); - roleIdsComingFromTheUICopy.add(id); - } - - List oldRoleIds = oldRoles.stream().map(role -> new Long(role.getRoleId())).collect(Collectors.toList()); - + List oldRoleIds = oldRoles.stream().map(role -> new Long(role.getRoleId())).collect(Collectors.toList()); + switch (typeOfChangesUpponUserMode) { + case ASSIGN_ROLES_TO_USERS: //new roles roleIdsComingFromTheUI.removeAll(oldRoleIds); List newRoles = new ArrayList(rolesComingFromTheUI.stream().filter(role -> roleIdsComingFromTheUI.contains(role.getRoleId())).collect(Collectors.toList()) ); - _log.info("New roles"); - newRoles.forEach(role -> _log.info("NewRole: " + role.getRoleName())); - + _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: //revoked roles oldRoleIds.removeAll(roleIdsComingFromTheUICopy); List rolesRevoked = new ArrayList( oldRoles.stream().filter(role -> oldRoleIds.contains(role.getRoleId())).collect(Collectors.toList()) ); - _log.info("Revoked roles"); - rolesRevoked.forEach(role -> _log.info("RevokedRole: " + role.getRoleName())); - - if(newRoles.size() > 0 || rolesRevoked.size() > 0) - notifyUsersByEmailOnRoleAssignemntRevoke(groupId, gcu,lum.getUserById(selfId), lgm.getGroup(groupId), newRoles, rolesRevoked, httpServletRequest); + _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; } + _log.info("User: " + currentUser.getUsername() + " hes edited the roles of user: "+ gcu.getUsername() + " for the context: " + groupName); - _log.debug("User: " + currentUser.getUsername() + " is editing the roles of user: "+ gcu.getUsername() + " for the site: " + groupName + "and deletes all previous site-roles"); - - } //END EDIT ROLES - - else { + } //END EDIT ROLES for single user + else { //MULTIUSER ASSIGNMENT of Roles only and Groups/Sites add and removal + System.out.println("MULTIUSER ASSIGNMENT type?="+typeOfChangesUpponUserMode); List existingGCubeTeams = lrm.listTeamsByGroup(groupId); - for(long uid : usersIDs){ + for (long uid : usersIDs) { //for each user + GCubeUser user = lum.getUserById(uid); GCubeUser gcu = lum.getUserByUsername(user.getUsername()); @@ -746,7 +789,6 @@ public class UsersManagementPortletHome extends GenericPortlet { } List oldRoles = lrm.listRolesByUserAndGroup(usersIDs[0], groupId); - @SuppressWarnings("unused") boolean rolesAssignmentSucceeded = lrm.assignRolesToUser(gcu.getUserId(), groupId, roleIDs); if(rolesAssignmentSucceeded) { @@ -765,13 +807,9 @@ public class UsersManagementPortletHome extends GenericPortlet { roleIdsComingFromTheUI.removeAll(oldRoleIds); List newRoles = new ArrayList(rolesComingFromTheUI.stream().filter(role -> roleIdsComingFromTheUI.contains(role.getRoleId())).collect(Collectors.toList()) ); - //revoked roles - oldRoleIds.removeAll(roleIdsComingFromTheUICopy); - List rolesRevoked = new ArrayList( oldRoles.stream().filter(role -> oldRoleIds.contains(role.getRoleId())).collect(Collectors.toList()) ); - - if(newRoles.size() > 0 && rolesRevoked.size() > 0) - notifyUsersByEmailOnRoleAssignemntRevoke(groupId, gcu,lum.getUserById(selfId), lgm.getGroup(groupId), newRoles, rolesRevoked, httpServletRequest); + if(newRoles.size() > 0) + notifyUsersByEmailOnRoleAssignment(groupId, gcu,lum.getUserById(selfId), lgm.getGroup(groupId), newRoles, httpServletRequest); } List gCubeTeamIDs = new ArrayList(); @@ -806,7 +844,7 @@ public class UsersManagementPortletHome extends GenericPortlet { } try { - + List oldUserTeams = lrm.listTeamsByUserAndGroup(gcu.getUserId(), groupId); List oldUserTeamsIDs = new ArrayList(); @@ -816,29 +854,29 @@ public class UsersManagementPortletHome extends GenericPortlet { } List newUserTeams = new ArrayList(); List newUserTeamsIDs = new ArrayList(); - + for(long gCubeTeamID : gCubeTeamIDs) { GCubeTeam gct = lrm.getTeam(gCubeTeamID); newUserTeams.add(gct); newUserTeamsIDs.add(gCubeTeamID); } - + List newTeamsToBeAssociatedWith = new ArrayList(newUserTeams); List newTeamsIDsToBeAssociatedWith = new ArrayList(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 teamsIDsToBeDisassociatedFrom = new ArrayList(oldUserTeamsIDs); @@ -847,20 +885,14 @@ public class UsersManagementPortletHome extends GenericPortlet { for(Iterator it = teamsIDsToBeDisassociatedFrom.iterator(); it.hasNext();){ teamsToBeDisassociatedFrom.add( lrm.getTeam(it.next()) ); } - -// lrm.deleteUserTeams(gcu.getUserId(), teamsToBeDisassociatedFrom); - -// for(int index = 0; index < teamsToBeDisassociatedFrom.size(); index++) { -// notifyUsersByEmailOnTeamDismissal(groupId, gcu, lum.getUserById(selfId), lgm.getGroup(groupId), httpServletRequest, teamsToBeDisassociatedFrom.get(index)); -// } } } catch (TeamRetrievalFault e) { _log.debug("User: " + gcu.getUsername() + " failed to be added to the following teams: " + teamNames); e.printStackTrace(); } - _log.debug("User: " + currentUser.getUsername() + " is editing the roles of user: "+ user.getUsername() + " for the site: " + groupName); - } + _log.debug("User: " + currentUser.getUsername() + " is editing the roles or VRE groups of user: "+ user.getUsername() + " for the site: " + groupName); + } //end for foreach user } return currentGroupUsers( groupId, selfId, httpServletRequest); @@ -952,7 +984,7 @@ public class UsersManagementPortletHome extends GenericPortlet { j++; } } - + TemplateUserHasBeenUnregisteredVRE requestAcceptedTemplate = new TemplateUserHasBeenUnregisteredVRE( gcu, um.getUserById(PortalUtil.getUserId(httpServletRequest)), gm.getGroup(groupId), PortalContext.getConfiguration().getGatewayName(httpServletRequest), PortalContext.getConfiguration().getGatewayURL(httpServletRequest)); @@ -972,7 +1004,7 @@ public class UsersManagementPortletHome extends GenericPortlet { ResourceRequest request, long selfId ){ HttpServletRequest httpServletRequest = PortalUtil.getHttpServletRequest(request); - + if(currentUsersTable && !deleteUsersFromCurrentUsersTable){ if(modeCurrentUsersTable == REFRESH_CURRENT_USERS_TABLE){ try { @@ -1210,7 +1242,7 @@ public class UsersManagementPortletHome extends GenericPortlet { } JSONArray ja = JSONFactoryUtil.createJSONArray(); SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", httpServletRequest.getLocale()); - + for(GCubeTeam siteTeam : currentGroupTeams){ JSONObject jo = JSONFactoryUtil.createJSONObject(); String siteTeamName = siteTeam.getTeamName(); @@ -1344,16 +1376,16 @@ public class UsersManagementPortletHome extends GenericPortlet { return emailSubject; } - + public void notifyUsersByEmailOnTeamAssignment( long groupId, GCubeUser gcu, GCubeUser manager, GCubeGroup group, HttpServletRequest httpServletRequest, GCubeTeam team) { - - + + _log.debug("notifyUsersByEmailOnTeamAssignment for user: " + gcu.getUsername() + " for team: " + team.getTeamName()); - + ArrayList managersEmails = getVREManagersEmailsForGroup(groupId); - + int recSize = managersEmails.size() + 1; Recipient[] recs = new Recipient[recSize]; recs[0] = new Recipient(new EmailAddress(gcu.getEmail()), RecipientType.TO); @@ -1364,27 +1396,27 @@ public class UsersManagementPortletHome extends GenericPortlet { i++; } } - + String properEmailSubject = EmailPartsConstruction.getSiteTeamAssignmentSubject(team.getTeamName()); TemplateUserHasBeenAssociatedWithGCubeTeam requestTeamAssignmentTemplate = new TemplateUserHasBeenAssociatedWithGCubeTeam( group, team, gcu, manager, new Date(), PortalContext.getConfiguration().getGatewayName(httpServletRequest), PortalContext.getConfiguration().getGatewayURL(httpServletRequest)); - + _log.debug("Sending email to user: " + gcu.getUsername() + ". He is being assigned to group: " + team.getTeamName()); - + EmailTemplateService.send(properEmailSubject, (org.gcube.common.portal.mailing.templates.Template)requestTeamAssignmentTemplate, httpServletRequest, recs); } - + public void notifyUsersByEmailOnTeamDismissal( long groupId, GCubeUser gcu, GCubeUser manager, GCubeGroup group, HttpServletRequest httpServletRequest, GCubeTeam team) { - + _log.debug("notifyUsersByEmailOnTeamDismissal for user: " + gcu.getUsername() + " for team: " + team.getTeamName()); - + ArrayList managersEmails = getVREManagersEmailsForGroup(groupId); - + int recSize = managersEmails.size() + 1; Recipient[] recs = new Recipient[recSize]; recs[0] = new Recipient(new EmailAddress(gcu.getEmail()), RecipientType.TO); @@ -1395,22 +1427,33 @@ public class UsersManagementPortletHome extends GenericPortlet { i++; } } - + String properEmailSubject = EmailPartsConstruction.getSiteTeamDismissalSubject(team.getTeamName()); TemplateUserHasBeenDissAssociatedWithGCubeTeam requestTeamDismissalTemplate = new TemplateUserHasBeenDissAssociatedWithGCubeTeam( group, team, gcu, manager, new Date(), PortalContext.getConfiguration().getGatewayName(httpServletRequest), PortalContext.getConfiguration().getGatewayURL(httpServletRequest)); - + _log.debug("Sending email to user: " + gcu.getUsername() + ". He is being removed from group: " + team.getTeamName()); - + EmailTemplateService.send(properEmailSubject, (org.gcube.common.portal.mailing.templates.Template)requestTeamDismissalTemplate, httpServletRequest, recs); } - public void notifyUsersByEmailOnRoleAssignemntRevoke(long groupId, GCubeUser userToReceiveTheMail, GCubeUser manager, GCubeGroup group, List newRoles, List revokedRoles, HttpServletRequest httpServletRequest) throws UserManagementSystemException, GroupRetrievalFault { - _log.debug("Notifying user by email on new role assignme or role revoke fro user: " + userToReceiveTheMail.getUsername() + " for group: " + group.getGroupName() ); + /** + * + * @param groupId + * @param userToReceiveTheMail + * @param manager + * @param group + * @param newRoles + * @param httpServletRequest + * @throws UserManagementSystemException + * @throws GroupRetrievalFault + */ + public void notifyUsersByEmailOnRoleAssignment(long groupId, GCubeUser userToReceiveTheMail, GCubeUser manager, GCubeGroup group, List newRoles, HttpServletRequest httpServletRequest) throws UserManagementSystemException, GroupRetrievalFault { + _log.debug("Notifying user by email on role assignment for user: " + userToReceiveTheMail.getUsername() + " for context name: " + group.getGroupName() ); ArrayList managersEmails = getVREManagersEmailsForGroup(groupId); int recSize = managersEmails.size() + 1; @@ -1423,24 +1466,47 @@ public class UsersManagementPortletHome extends GenericPortlet { i++; } } - String properEmailSubject = EmailPartsConstruction.getRoleAssignmentRevokeSubject(new LiferayGroupManager().getGroup(groupId).getGroupName()); - _log.debug("properEmailSubject: " + properEmailSubject); + TemplateUserRolesModifiedForGroup templateUserRolesModifiedForGroup = new TemplateUserRolesModifiedForGroup( + PortalContext.getConfiguration().getGatewayName(httpServletRequest), PortalContext.getConfiguration().getGatewayURL(httpServletRequest), + group, userToReceiveTheMail, manager, newRoles, new ArrayList<>(), new Date() ); + + _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, recs); + } + /** + * + * @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 revokeRoles, HttpServletRequest httpServletRequest) throws UserManagementSystemException, GroupRetrievalFault { + _log.debug("Notifying user by email on role revokation for user: " + userToReceiveTheMail.getUsername() + " for context name: " + group.getGroupName() ); + ArrayList managersEmails = getVREManagersEmailsForGroup(groupId); + + int recSize = managersEmails.size() + 1; + Recipient[] recs = new Recipient[recSize]; + recs[0] = new Recipient(new EmailAddress(userToReceiveTheMail.getEmail()), RecipientType.TO); + if (!managersEmails.isEmpty()) { + int i = 1; + for (String mEmail : managersEmails){ + recs[i] = new Recipient(new EmailAddress(mEmail), RecipientType.BCC); + i++; + } + } + String properEmailSubject = EmailPartsConstruction.getRoleAssignmentRevokeSubject(new LiferayGroupManager().getGroup(groupId).getGroupName()); TemplateUserRolesModifiedForGroup templateUserRolesModifiedForGroup = new TemplateUserRolesModifiedForGroup( - PortalContext.getConfiguration().getGatewayName(httpServletRequest), PortalContext.getConfiguration().getGatewayURL(httpServletRequest), - group, userToReceiveTheMail, manager, newRoles, revokedRoles, new Date() ); + PortalContext.getConfiguration().getGatewayName(httpServletRequest), PortalContext.getConfiguration().getGatewayURL(httpServletRequest), + group, userToReceiveTheMail, manager, new ArrayList<>(), revokeRoles, new Date() ); -// _log.debug("--------------------------------------------------------------------------------------------------------------------------------------------"); -// _log.info(templateUserRolesModifiedForGroup.getTextHTML()); -// _log.info("--------------------------------------------------------------------------------------------------------------------------------------------"); -// _log.info(templateUserRolesModifiedForGroup.getTextPLAIN()); -// _log.info("--------------------------------------------------------------------------------------------------------------------------------------------"); - - _log.debug("Sending email to user: " + userToReceiveTheMail.getUsername() + ". His roles have been modified within the context of VRE: " + group.getGroupName()); _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, recs); } diff --git a/src/main/webapp/js/Toolbar.js b/src/main/webapp/js/Toolbar.js index 17f7bca..3a7ba48 100644 --- a/src/main/webapp/js/Toolbar.js +++ b/src/main/webapp/js/Toolbar.js @@ -87,7 +87,7 @@ function constructToolbarForCurrentUsersTable(){ })).append($('
', { id : 'removeRolesToUser', class: 'insideToolbar', - text : 'Remove Roles' + text : 'Revoke Roles' })).append($('
', { id : 'assignUsersToGroup', class: 'insideToolbar', diff --git a/src/main/webapp/js/tableEvents.js b/src/main/webapp/js/tableEvents.js index c3ebbdf..e3709f7 100644 --- a/src/main/webapp/js/tableEvents.js +++ b/src/main/webapp/js/tableEvents.js @@ -557,37 +557,42 @@ function tableEvents() { }).on('click', 'div#toolbar.shownToolbar div#removeRolesToUser', function() { - $('#removeUsersRolesModal').modal('show'); - //remove previous tags - $('#roleListInRemoveRolesModal').parent().find('.text-tag').remove(); - currentUsersTableRows = []; - var usersEmails = []; - for (var i = 0; i < usersTableDataForEditing.length; i++) { - var email = usersTableDataForEditing[i][0].Email; - currentUsersTableRows - .push(usersTableDataForEditing[i].rowIndex); - usersEmails.push(email.substring(5, email.length - 6)); - var userUuid = usersTableDataForEditing[i][0].UserId; - userTableUUIDsForEditing.push(userUuid); - } - var tags = $('textarea#userNamesListInRemoveRolesModal').parent().find( - 'div.text-tags div.text-tag'); - if (tags.length > 0) - tags.remove();// Remove previous tags - $('textarea#userNamesListInRemoveRolesModal').textext()[0].tags().addTags( - usersEmails); - - for (var j = 0; j < userTableUUIDsForEditing.length; j++) { - var value = userTableUUIDsForEditing[j].toString(); - $($('#userNamesListInRemoveRolesModal').parent().find('.text-tag')[j]).data( - 'userUUID', value.substring(5, value.length - 6)); - } - showCheckBoxForSingleTagInRemoveRolesModal(); - $('textarea#userNamesListInRemoveRolesModal').parent().find('a.tag-remove').off() - .on('click', function() { - $(this).closest('.text-tag').remove(); - showCheckBoxForSingleTagInAssignRolesModal(); - }); + if (usersTableDataForEditing.length > 1) { //you can revoke roles to one user at a time + alert('Not supported, you can revoke roles to one user at a time only. Please select one single user.'); + } + else { + $('#removeUsersRolesModal').modal('show'); + //remove previous tags + $('#roleListInRemoveRolesModal').parent().find('.text-tag').remove(); + currentUsersTableRows = []; + var usersEmails = []; + for (var i = 0; i < usersTableDataForEditing.length; i++) { + var email = usersTableDataForEditing[i][0].Email; + currentUsersTableRows + .push(usersTableDataForEditing[i].rowIndex); + usersEmails.push(email.substring(5, email.length - 6)); + var userUuid = usersTableDataForEditing[i][0].UserId; + userTableUUIDsForEditing.push(userUuid); + } + var tags = $('textarea#userNamesListInRemoveRolesModal').parent().find( + 'div.text-tags div.text-tag'); + if (tags.length > 0) + tags.remove();// Remove previous tags + $('textarea#userNamesListInRemoveRolesModal').textext()[0].tags().addTags( + usersEmails); + + for (var j = 0; j < userTableUUIDsForEditing.length; j++) { + var value = userTableUUIDsForEditing[j].toString(); + $($('#userNamesListInRemoveRolesModal').parent().find('.text-tag')[j]).data( + 'userUUID', value.substring(5, value.length - 6)); + } + showCheckBoxForSingleTagInRemoveRolesModal(); + $('textarea#userNamesListInRemoveRolesModal').parent().find('a.tag-remove').off() + .on('click', function() { + $(this).closest('.text-tag').remove(); + showCheckBoxForSingleTagInAssignRolesModal(); + }); + } }).on('click', 'div#toolbar.shownToolbar div#assignUsersToGroup', function() {