added email notification separated for VRE Managers about roles

modification
This commit is contained in:
Massimiliano Assante 2021-05-13 18:03:53 +02:00
parent a970ce8844
commit a05be29b1f
3 changed files with 96 additions and 50 deletions

View File

@ -1,18 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<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="java-output-path" value="/UsersManagementPortlet/target/classes"/>
<property name="context-root" value="UsersManagementPortlet-portlet"/>
</wb-module>
<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="java-output-path" value="/UsersManagementPortlet/target/classes"/>
<property name="context-root" value="UsersManagementPortlet-portlet"/>
</wb-module>
</project-modules>

View File

@ -114,7 +114,7 @@
<dependency>
<groupId>org.gcube.portal.mailing</groupId>
<artifactId>email-templates-library</artifactId>
<version>[1.0.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
<version>[1.5.0-SNAPSHOT,2.0.0-SNAPSHOT)</version>
</dependency>
</dependencies>
<build>

View File

@ -27,6 +27,8 @@ 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.TemplateManagerHasAssignedRoles;
import org.gcube.portal.mailing.templates.TemplateManagerHasRevokedRoles;
import org.gcube.portal.mailing.templates.TemplateUserApprovedRequestVRE;
import org.gcube.portal.mailing.templates.TemplateUserHasBeenUnregisteredVRE;
import org.gcube.portal.mailing.templates.TemplateUserRejectedRequestVRE;
@ -1457,29 +1459,49 @@ public class UsersManagementPortletHome extends GenericPortlet {
* @throws UserManagementSystemException
* @throws GroupRetrievalFault
*/
public void notifyUsersByEmailOnRoleAssignment(long groupId, GCubeUser userToReceiveTheMail, GCubeUser manager, GCubeGroup group, List<GCubeRole> newRoles, HttpServletRequest httpServletRequest) throws UserManagementSystemException, 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;
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 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(
PortalContext.getConfiguration().getGatewayName(httpServletRequest), PortalContext.getConfiguration().getGatewayURL(httpServletRequest),
TemplateUserRolesModifiedForGroup templateUserRolesModifiedForGroup =
new TemplateUserRolesModifiedForGroup(gatewayName, gatewayURL,
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);
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();
if (!managersEmails.isEmpty()) {
for (String mEmail : managersEmails){
TemplateManagerHasAssignedRoles managersTemplate =
new TemplateManagerHasAssignedRoles(
userToReceiveTheMail,
manager.getFullname(),
group.getGroupName(),
theRoles,
gatewayName,
gatewayURL);
EmailTemplateService.send(managersEmailSubject, managersTemplate, httpServletRequest, new Recipient(mEmail));
}
}
}
/**
*
* @param groupId
@ -1493,26 +1515,41 @@ public class UsersManagementPortletHome extends GenericPortlet {
*/
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 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(
PortalContext.getConfiguration().getGatewayName(httpServletRequest), PortalContext.getConfiguration().getGatewayURL(httpServletRequest),
group, userToReceiveTheMail, manager, new ArrayList<>(), revokeRoles, new Date() );
TemplateUserRolesModifiedForGroup templateUserRolesModifiedForGroup =
new TemplateUserRolesModifiedForGroup(gatewayName, gatewayURL,
group, userToReceiveTheMail, manager, revokeRoles, 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);
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();
if (!managersEmails.isEmpty()) {
for (String mEmail : managersEmails){
TemplateManagerHasRevokedRoles managersTemplate =
new TemplateManagerHasRevokedRoles(
userToReceiveTheMail,
manager.getFullname(),
group.getGroupName(),
theRoles,
gatewayName,
gatewayURL);
EmailTemplateService.send(managersEmailSubject, managersTemplate, httpServletRequest, new Recipient(mEmail));
}
}
}
}