2016-03-21 16:55:32 +01:00
|
|
|
package org.gcube.portlets.user.joinvre.server;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
2017-05-05 17:14:38 +02:00
|
|
|
import java.util.Base64;
|
2016-03-21 16:55:32 +01:00
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Set;
|
|
|
|
|
2016-04-26 16:26:57 +02:00
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
2017-05-05 17:14:38 +02:00
|
|
|
import org.gcube.common.portal.GCubePortalConstants;
|
2016-04-26 16:26:57 +02:00
|
|
|
import org.gcube.common.portal.PortalContext;
|
2016-03-25 11:47:56 +01:00
|
|
|
import org.gcube.common.portal.mailing.EmailNotification;
|
2016-03-21 16:55:32 +01:00
|
|
|
import org.gcube.portal.databook.shared.Invite;
|
|
|
|
import org.gcube.vomanagement.usermanagement.GroupManager;
|
|
|
|
import org.gcube.vomanagement.usermanagement.UserManager;
|
|
|
|
import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault;
|
|
|
|
import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException;
|
|
|
|
import org.gcube.vomanagement.usermanagement.impl.LiferayGroupManager;
|
|
|
|
import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager;
|
|
|
|
import org.gcube.vomanagement.usermanagement.model.GCubeGroup;
|
|
|
|
import org.gcube.vomanagement.usermanagement.model.GCubeRole;
|
|
|
|
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @author Massimiliano Assante ISTI-CNR
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public class LoginServiceUtil {
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static final String ROOT_ORG = "rootorganization";
|
2017-05-05 17:14:38 +02:00
|
|
|
|
|
|
|
public static final String MANAGE_USERS_REQUESTS_FRIENDLY_URL = "/manage-user-and-requests";
|
2016-03-21 16:55:32 +01:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
2016-03-29 16:03:16 +02:00
|
|
|
public static final String PUBLIC_LAYOUT_NAME = "Data e-Infrastructure gateway";
|
2016-03-21 16:55:32 +01:00
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static final String GUEST_COMMUNITY_NAME = "Guest";
|
|
|
|
|
|
|
|
private static Logger _log = LoggerFactory.getLogger(LoginServiceUtil.class);
|
|
|
|
|
|
|
|
protected static ArrayList<String> getAdministratorsEmails(String scope) {
|
|
|
|
LiferayUserManager userManager = new LiferayUserManager();
|
|
|
|
LiferayGroupManager groupManager = new LiferayGroupManager();
|
|
|
|
long groupId = -1;
|
|
|
|
try {
|
|
|
|
List<GCubeGroup> allGroups = groupManager.listGroups();
|
|
|
|
_log.debug("Number of groups retrieved: " + allGroups.size());
|
|
|
|
for (int i = 0; i < allGroups.size(); i++) {
|
|
|
|
long grId = allGroups.get(i).getGroupId();
|
|
|
|
String groupScope = groupManager.getInfrastructureScope(grId);
|
|
|
|
System.out.println("Comparing: " + groupScope + " " + scope);
|
|
|
|
if (groupScope.equals(scope)) {
|
|
|
|
groupId = allGroups.get(i).getGroupId();
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (UserManagementSystemException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
} catch (GroupRetrievalFault e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
Map<GCubeUser, List<GCubeRole>> usersAndRoles = null;
|
|
|
|
try {
|
|
|
|
usersAndRoles = userManager.listUsersAndRolesByGroup(groupId);
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
Set<GCubeUser> users = usersAndRoles.keySet();
|
|
|
|
ArrayList<String> adminEmailsList = new ArrayList<String>();
|
|
|
|
for (GCubeUser usr:users) {
|
|
|
|
List<GCubeRole> roles = usersAndRoles.get(usr);
|
|
|
|
for (int i = 0; i < roles.size(); i++) {
|
|
|
|
if (roles.get(i).getRoleName().equals("VO-Admin") || roles.get(i).getRoleName().equals("VRE-Manager")) {
|
|
|
|
adminEmailsList.add(usr.getEmail());
|
|
|
|
_log.debug("Admin: " + usr.getFullname());
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return adminEmailsList;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param scope .
|
|
|
|
* @param optionalMessage .
|
|
|
|
*/
|
2016-04-26 16:26:57 +02:00
|
|
|
public static void addMembershipRequest(String username, String scope, String optionalMessage, HttpServletRequest request) throws Exception{
|
|
|
|
|
|
|
|
String gatewayName = PortalContext.getConfiguration().getGatewayName(request);
|
|
|
|
String portalbasicurl = PortalContext.getConfiguration().getGatewayURL(request);
|
2016-03-21 16:55:32 +01:00
|
|
|
_log.info("gatewayName = " + gatewayName + " Message=" + optionalMessage);
|
2017-05-05 17:14:38 +02:00
|
|
|
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
ArrayList<String> adminEmails = LoginServiceUtil.getAdministratorsEmails(scope);
|
|
|
|
|
|
|
|
UserManager um = new LiferayUserManager();
|
2017-05-05 17:14:38 +02:00
|
|
|
|
2016-03-21 16:55:32 +01:00
|
|
|
GCubeUser currUser = um.getUserByUsername(username);
|
2017-05-05 17:14:38 +02:00
|
|
|
String fullName = currUser.getFullname();
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
String selectedVRE = scope.substring(scope.lastIndexOf("/")+1, scope.length());
|
|
|
|
_log.info("Requested MEMBERSHIP for: " + selectedVRE + " scope: " + scope);
|
|
|
|
GroupManager gm = new LiferayGroupManager();
|
2017-05-05 17:14:38 +02:00
|
|
|
long gatewayGroupId = gm.getGroupId(gatewayName);
|
|
|
|
long vreGroupId = gm.getGroupIdFromInfrastructureScope(scope);
|
|
|
|
um.requestMembership(currUser.getUserId(),vreGroupId, optionalMessage);
|
2016-03-21 16:55:32 +01:00
|
|
|
|
2017-05-05 17:14:38 +02:00
|
|
|
String manageRequestURL = portalbasicurl + GCubePortalConstants.PREFIX_GROUP_URL + "/"+ selectedVRE.toLowerCase() + MANAGE_USERS_REQUESTS_FRIENDLY_URL;
|
|
|
|
|
|
|
|
long vreLogoId = gm.getGroup(vreGroupId).getLogoId();
|
|
|
|
String vreLogoURL = portalbasicurl + gm.getGroupLogoURL(vreLogoId);
|
|
|
|
|
|
|
|
long gatewayLogoId = gm.getGroup(gatewayGroupId).getLogoId();
|
|
|
|
String gatewayLogoURL = portalbasicurl + gm.getGroupLogoURL(gatewayLogoId);
|
|
|
|
|
2016-03-21 16:55:32 +01:00
|
|
|
StringBuffer body = new StringBuffer();
|
2016-03-29 16:03:16 +02:00
|
|
|
|
2017-05-05 17:14:38 +02:00
|
|
|
String encodedTemplate = "PCEtLSBJbmxpbmVyIEJ1aWxkIFZlcnNpb24gNDM4MGI3NzQxYmI3NTlkNmNiOTk3NTQ1ZjNhZGQyMWFkNDhmMDEwYiAtLT4NCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9Im1pbi1oZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjMgIWltcG9ydGFudDsiPg0KICA8aGVhZD4NCiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4NCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIiAvPg0KICAgIDx0aXRsZT5UaXRsZTwvdGl0bGU+DQogIDwvaGVhZD4NCiAgPGJvZHkgc3R5bGU9IndpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IG1pbi13aWR0aDogMTAwJTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OyAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiAjMGEwYTBhOyBmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgdGV4dC1hbGlnbjogbGVmdDsgbGluZS1oZWlnaHQ6IDEuMzsgZm9udC1zaXplOiAxNnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzICFpbXBvcnRhbnQ7IG1hcmdpbjogMDsgcGFkZGluZzogMDsiIGJnY29sb3I9IiNmM2YzZjMgIWltcG9ydGFudCI+DQogICAgPHRhYmxlIGNsYXNzPSJib2R5IiBkYXRhLW1hZGUtd2l0aC1mb3VuZGF0aW9uPSIiIHN0eWxlPSJib3JkZXItc3BhY2luZzogMDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgdmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1hbGlnbjogbGVmdDsgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMyAhaW1wb3J0YW50OyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAxMDAlOyBjb2xvcjogIzBhMGEwYTsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjM7IGZvbnQtc2l6ZTogMTZweDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyIgYmdjb2xvcj0iI2YzZjNmMyAhaW1wb3J0YW50Ij48dHIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDA7IiBhbGlnbj0ibGVmdCI+PHRkIGNsYXNzPSJmbG9hdC1jZW50ZXIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiBzdHlsZT0id29yZC13cmFwOiBicmVhay13b3JkOyAtd2Via2l0LWh5cGhlbnM6IGF1dG87IC1tb3otaHlwaGVuczogYXV0bzsgaHlwaGVuczogYXV0bzsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZsb2F0OiBub25lOyBjb2xvcjogIzBhMGEwYTsgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxpbmUtaGVpZ2h0OiAxLjM7IGZvbnQtc2l6ZTogMTZweDsgbWFyZ2luOiAwIGF1dG87IHBhZGRpbmc6IDA7Ij4NCiAgICAgICAgICA8Y2VudGVyIGRhdGEtcGFyc2VkPSIiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWluLXdpZHRoOiA1ODBweDsiPg0KICAgICAgICAgICAgPHRhYmxlIGFsaWduPSJjZW50ZXIiIGNsYXNzPSJ3cmFwcGVyIGhlYWRlciBmbG9hdC1jZW50ZXIiIHN0eWxlPSJ3aWR0aDogMTAwJTsgYm9yZGVyLXNwYWNpbmc6IDA7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHRleHQtYWxpZ246IGNlbnRlcjsgZmxvYXQ6IG5vbmU7IG1hcmdpbjogMCBhdXRvOyBwYWRkaW5nOiAwOyI+PHRyIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRkaW5nOiAwOyIgYWxpZ249ImxlZnQiPjx0ZCBjbGFzcz0id3JhcHBlci1pbm5lciIgc3R5bGU9IndvcmQtd3JhcDogYnJlYWstd29yZDsgLXdlYmtpdC1oeXBoZW5zOiBhdXRvOyAtbW96LWh5cGhlbnM6IGF1dG87IGh5cGhlbnM6IGF1dG87IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1hbGlnbjogbGVmdDsgY29sb3I6ICMwYTBhMGE7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXdlaWdodDogbm9ybWFsOyBsaW5lLWhlaWdodDogMS4zOyBmb250LXNpemU6IDE2cHg7IG1hcmdpbjogMDsgcGFkZGluZzogMDsiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+DQogICAgICAgICAgICAgICAgICA8dGFibGUgYWxpZ249ImNlbnRlciIgY2xhc3M9ImNvbnRhaW5lciIgc3R5bGU9ImJvcmRlci1zcGFjaW5nOiAwOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB0ZXh0LWFsaWduOiBpbmhlcml0OyB3aWR0aDogNTgwcHg7IGJhY2tncm91bmQ6ICNmZWZlZmU7IG1hcmdpbjogMCBhdXRvOyBwYWRkaW5nOiAwOyIgYmdjb2xvcj0iI2ZlZmVmZSI+PHRib2R5Pjx0ciBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzogMDsiIGFsaWduPSJsZWZ0Ij48dGQgc3R5bGU9IndvcmQtd3JhcDogYnJlYWstd29yZDsgLXdlYmtpdC1oeXBoZW5zOiBhdXRvOyAtbW96LWh5cGhlbnM6IGF1dG87IGh5cGhlbnM6IGF1dG87IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2UgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246IHRvcDsgdGV4dC1hbGlnbjogbGVmdDsgY29sb3I6ICMwYTBhMGE7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXd
|
|
|
|
/**
|
|
|
|
* Decoding our HTML and substituting required values.
|
|
|
|
*/
|
|
|
|
byte[] base64DecodedData = Base64.getDecoder().decode(encodedTemplate);
|
|
|
|
|
|
|
|
String template = new String(base64DecodedData)
|
|
|
|
.replace("{{SELECTED_VRE_NAME}}", selectedVRE)
|
|
|
|
.replace("{{VRE_LOGO:URL}}", vreLogoURL)
|
|
|
|
.replace("{{GATEWAY_LOGO:URL}}", gatewayLogoURL)
|
|
|
|
.replace("{{GATEWAY_NAME}}", gatewayName)
|
|
|
|
.replace("{{MANAGE_REQUEST_URL}}", manageRequestURL)
|
|
|
|
.replace("{{USER_EMAIL}}", currUser.getEmail())
|
|
|
|
.replace("{{USER_ID}}", username)
|
|
|
|
.replace("{{USER_FULLNAME}}", fullName)
|
|
|
|
.replace("{{OPTIONAL_MESSAGE}}", optionalMessage);
|
|
|
|
|
|
|
|
body.append(template);
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
String[] allMails = new String[adminEmails.size()];
|
|
|
|
|
|
|
|
adminEmails.toArray(allMails);
|
|
|
|
|
2017-05-05 17:14:38 +02:00
|
|
|
EmailNotification mailToAdmin = new EmailNotification(allMails , "Request for access to VRE " + selectedVRE, body.toString(), request);
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
mailToAdmin.sendEmail();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param scope .
|
|
|
|
* @param optionalMessage .
|
|
|
|
*/
|
2016-04-26 16:26:57 +02:00
|
|
|
public static void notifyUserSelfRegistration(String username, String scope, HttpServletRequest request) throws Exception {
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
ArrayList<String> adminEmails = LoginServiceUtil.getAdministratorsEmails(scope);
|
|
|
|
LiferayUserManager um = new LiferayUserManager();
|
|
|
|
GCubeUser currUser = um.getUserByUsername(username);
|
|
|
|
String name = currUser.getFirstName();
|
|
|
|
String lastname = currUser.getLastName();
|
2016-04-26 16:26:57 +02:00
|
|
|
String portalbasicurl = PortalContext.getConfiguration().getGatewayURL(request);
|
|
|
|
String gatewayName = PortalContext.getConfiguration().getGatewayName(request);
|
2016-03-21 16:55:32 +01:00
|
|
|
StringBuffer body = new StringBuffer();
|
|
|
|
body.append("<p>Dear manager of "+ scope +",<br />this email message was automatically generated by " + portalbasicurl +" to inform you that ");
|
2016-03-25 11:47:56 +01:00
|
|
|
body.append("</p>").append("<p>")
|
|
|
|
.append("<b>"+name + " " + lastname +"</b> has self registered to the following environment: ")
|
|
|
|
.append("<br /><br />")
|
|
|
|
.append("<b>" + scope+"</b>")
|
|
|
|
.append("<br />")
|
|
|
|
.append("<br />")
|
|
|
|
.append("<b>Username: </b>" + username)
|
|
|
|
.append("<br />")
|
|
|
|
.append("<b>e-mail: </b>" + currUser.getEmail())
|
|
|
|
.append("</p>")
|
|
|
|
.append("<p>")
|
|
|
|
.append("<br />" + portalbasicurl)
|
|
|
|
.append("</p>");
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
String[] allMails = new String[adminEmails.size()];
|
|
|
|
|
|
|
|
adminEmails.toArray(allMails);
|
|
|
|
|
2016-04-26 16:26:57 +02:00
|
|
|
EmailNotification mailToAdmin = new EmailNotification(allMails , "[" + gatewayName + "] - Self Registration", body.toString(), request);
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
mailToAdmin.sendEmail();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @param scope .
|
|
|
|
* @param optionalMessage .
|
|
|
|
*/
|
2016-04-26 16:26:57 +02:00
|
|
|
public static void notifyUserAcceptedInvite(String username, String scope, Invite invite, HttpServletRequest request) throws Exception {
|
2016-03-21 16:55:32 +01:00
|
|
|
|
2016-04-26 16:26:57 +02:00
|
|
|
String portalbasicurl = PortalContext.getConfiguration().getGatewayURL(request);
|
|
|
|
String gatewayName = PortalContext.getConfiguration().getGatewayName(request);
|
|
|
|
|
2016-03-21 16:55:32 +01:00
|
|
|
ArrayList<String> adminEmails = LoginServiceUtil.getAdministratorsEmails(scope);
|
|
|
|
|
|
|
|
LiferayUserManager um = new LiferayUserManager();
|
|
|
|
GCubeUser currUser = um.getUserByUsername(username);
|
|
|
|
String name = currUser.getFirstName();
|
|
|
|
String lastname = currUser.getLastName();
|
|
|
|
|
|
|
|
|
|
|
|
StringBuffer body = new StringBuffer();
|
|
|
|
body.append("<p>Dear manager of "+ scope +",<br />this email message was automatically generated by " + portalbasicurl +" to inform you that ");
|
2016-03-25 11:47:56 +01:00
|
|
|
body.append("</p>")
|
|
|
|
.append("<p>")
|
|
|
|
.append("<b>"+name + " " + lastname +"</b> has accepted an invitation to the following environment: ")
|
|
|
|
.append("<br /><br />")
|
|
|
|
.append("<b>" + scope+"</b>")
|
|
|
|
.append("<br />")
|
|
|
|
.append("<br />")
|
|
|
|
.append("<b>Username: </b>" + username)
|
|
|
|
.append("<br />")
|
|
|
|
.append("<b>e-mail: </b>" + currUser.getEmail())
|
|
|
|
.append("</p>")
|
|
|
|
.append("<p>")
|
|
|
|
.append("<b>The invitation was sent by " + invite.getSenderFullName() +" (" + invite.getSenderUserId()+") on " + invite.getTime()+"</b>")
|
|
|
|
.append("</p>");
|
|
|
|
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
String[] allMails = new String[adminEmails.size()];
|
|
|
|
|
|
|
|
adminEmails.toArray(allMails);
|
|
|
|
|
2016-04-26 16:26:57 +02:00
|
|
|
EmailNotification mailToAdmin = new EmailNotification(allMails , "[" + gatewayName + "] - Accepted Invitation", body.toString(), request);
|
2016-03-21 16:55:32 +01:00
|
|
|
|
|
|
|
mailToAdmin.sendEmail();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|