alpha test is passed

This commit is contained in:
Massimiliano Assante 2021-05-13 12:17:25 +02:00
parent 5cb7bbb3a1
commit bc5f309fc5
4 changed files with 314 additions and 235 deletions

View File

@ -1,10 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="UsersManagementPortlet">
<wb-module deploy-name="UsersManagementPortlet-portlet">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<property name="context-root" value="UsersManagementPortlet"/>
<property name="java-output-path" value="/UsersManagementPortlet/target/classes"/>
<property name="context-root" value="UsersManagementPortlet-portlet"/>
</wb-module>
</project-modules>

View File

@ -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<GCubeMembershipRequest> 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<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();
}
}
/**
*
* @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<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);
}
long[] gCubeTeamIDs = new long[usersTeams.length];
String[] gCubeTeamNames = new String[usersTeams.length];
StringBuffer teamNames = new StringBuffer();
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 {
if(typeOfChangesUpponUserMode != ASSIGN_ROLES_TO_USERS){
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();
}
boolean rolesAssignmentSucceeded = lrm.assignRolesToUser(gcu.getUserId(), groupId, roleIDs);
if(rolesAssignmentSucceeded) {
List<GCubeRole> rolesComingFromTheUI = gCubeRoles.length > 0 ? Arrays.asList(gCubeRoles) : new ArrayList<GCubeRole>();
_log.info("rolesComingFromTheUI");
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);
}
List<Long> oldRoleIds = oldRoles.stream().map(role -> new Long(role.getRoleId())).collect(Collectors.toList());
List<Long> 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<GCubeRole> newRoles = new ArrayList<GCubeRole>(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<GCubeRole> rolesRevoked = new ArrayList<GCubeRole>( 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<GCubeTeam> 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<GCubeRole> 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<GCubeRole> newRoles = new ArrayList<GCubeRole>(rolesComingFromTheUI.stream().filter(role -> roleIdsComingFromTheUI.contains(role.getRoleId())).collect(Collectors.toList()) );
//revoked roles
oldRoleIds.removeAll(roleIdsComingFromTheUICopy);
List<GCubeRole> rolesRevoked = new ArrayList<GCubeRole>( 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<Long> gCubeTeamIDs = new ArrayList<Long>();
@ -806,7 +844,7 @@ public class UsersManagementPortletHome extends GenericPortlet {
}
try {
List<GCubeTeam> oldUserTeams = lrm.listTeamsByUserAndGroup(gcu.getUserId(), groupId);
List<Long> oldUserTeamsIDs = new ArrayList<Long>();
@ -816,29 +854,29 @@ public class UsersManagementPortletHome extends GenericPortlet {
}
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);
@ -847,20 +885,14 @@ public class UsersManagementPortletHome extends GenericPortlet {
for(Iterator<Long> 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<String> 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<String> 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<GCubeRole> newRoles, List<GCubeRole> 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<GCubeRole> 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<String> 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<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() );
ArrayList<String> 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);
}

View File

@ -87,7 +87,7 @@ function constructToolbarForCurrentUsersTable(){
})).append($('<div></div>', {
id : 'removeRolesToUser',
class: 'insideToolbar',
text : 'Remove Roles'
text : 'Revoke Roles'
})).append($('<div></div>', {
id : 'assignUsersToGroup',
class: 'insideToolbar',

View File

@ -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() {