works like a charm
git-svn-id: https://svn.research-infrastructures.eu/d4science/gcube/trunk/portlets/user/join-vre@126288 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
747be36ea8
commit
e0674f99c3
|
@ -4,6 +4,9 @@
|
|||
<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"/>
|
||||
<dependent-module archiveName="invites-common-library-1.2.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/invites-common-library/invites-common-library">
|
||||
<dependency-type>uses</dependency-type>
|
||||
</dependent-module>
|
||||
<property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/>
|
||||
<property name="context-root" value="join-vre"/>
|
||||
</wb-module>
|
||||
|
|
|
@ -30,10 +30,7 @@ public class JoinVRE implements EntryPoint {
|
|||
private void checkIsReferral() {
|
||||
logger.log(Level.INFO,"checkIsReferral()");
|
||||
if (getSiteLiferayId() == null) {
|
||||
ResponsivePanel rp = null;
|
||||
rp = displayVREs();
|
||||
// //TODO: REMOVE
|
||||
// checkInvitation(new VRE(), 1, rp);
|
||||
displayVREs();
|
||||
}
|
||||
else {
|
||||
Long vreId = -1L;
|
||||
|
|
|
@ -20,6 +20,7 @@ import com.google.gwt.user.client.ui.Widget;
|
|||
|
||||
public class AccessVREDialog extends Composite {
|
||||
private final JoinServiceAsync joinService = GWT.create(JoinService.class);
|
||||
private final static boolean IS_INVITATION = false;
|
||||
private static AccessVREDialogUiBinder uiBinder = GWT
|
||||
.create(AccessVREDialogUiBinder.class);
|
||||
|
||||
|
@ -30,7 +31,7 @@ public class AccessVREDialog extends Composite {
|
|||
@UiField Button confirmRequest;
|
||||
@UiField HelpBlock helpBlock;
|
||||
@UiField Icon loading;
|
||||
private boolean isInvitation = false;
|
||||
|
||||
VRE myVRE = null;
|
||||
public AccessVREDialog(final VRE vre) {
|
||||
initWidget(uiBinder.createAndBindUi(this));
|
||||
|
@ -43,7 +44,7 @@ public class AccessVREDialog extends Composite {
|
|||
}
|
||||
|
||||
public void show() {
|
||||
String headerText = isInvitation ? "Invitation to " + myVRE.getName() : "Join request for " + myVRE.getName();
|
||||
String headerText = "Join VRE request for " + myVRE.getName();
|
||||
m.setTitle(headerText);
|
||||
m.show();
|
||||
}
|
||||
|
@ -56,7 +57,7 @@ public class AccessVREDialog extends Composite {
|
|||
void confirm(ClickEvent e) {
|
||||
helpBlock.setText("Registering to " + myVRE.getName() + " please wait ... ");
|
||||
loading.setVisible(true);
|
||||
joinService.registerUser(myVRE.getinfraScope(), myVRE.getId(), isInvitation, new AsyncCallback<Boolean>() {
|
||||
joinService.registerUser(myVRE.getinfraScope(), myVRE.getId(), IS_INVITATION, new AsyncCallback<Boolean>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(Boolean result) {
|
||||
|
|
|
@ -1,26 +1,29 @@
|
|||
package org.gcube.portlets.user.joinvre.client.ui;
|
||||
|
||||
import org.gcube.portal.databook.shared.Invite;
|
||||
import org.gcube.portal.databook.shared.UserInfo;
|
||||
import org.gcube.portlets.user.joinvre.client.JoinService;
|
||||
import org.gcube.portlets.user.joinvre.client.JoinServiceAsync;
|
||||
import org.gcube.portlets.user.joinvre.shared.VRE;
|
||||
|
||||
import com.github.gwtbootstrap.client.ui.Button;
|
||||
import com.github.gwtbootstrap.client.ui.HelpBlock;
|
||||
import com.github.gwtbootstrap.client.ui.Icon;
|
||||
import com.github.gwtbootstrap.client.ui.Image;
|
||||
import com.github.gwtbootstrap.client.ui.Modal;
|
||||
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.uibinder.client.UiBinder;
|
||||
import com.google.gwt.uibinder.client.UiField;
|
||||
import com.github.gwtbootstrap.client.ui.Button;
|
||||
import com.github.gwtbootstrap.client.ui.constants.ButtonType;
|
||||
import com.google.gwt.uibinder.client.UiHandler;
|
||||
import com.google.gwt.user.client.Window.Location;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Composite;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
|
||||
public class AccessViaInviteDialog extends Composite {
|
||||
private final JoinServiceAsync joinService = GWT.create(JoinService.class);
|
||||
private final static boolean IS_INVITATION = true;
|
||||
private static AccessViaInviteDialogUiBinder uiBinder = GWT.create(AccessViaInviteDialogUiBinder.class);
|
||||
|
||||
interface AccessViaInviteDialogUiBinder extends
|
||||
|
@ -45,8 +48,9 @@ public class AccessViaInviteDialog extends Composite {
|
|||
joinService.readInvite(inviteId, new AsyncCallback<UserInfo>() {
|
||||
@Override
|
||||
public void onSuccess(UserInfo invitingUser) {
|
||||
helpBlock.setText("You have been invited by " +invitingUser.getFullName());
|
||||
helpBlock.setText("You have been invited by " +invitingUser.getFullName() + ", to accept the invite, please click on the accept invite button below.");
|
||||
avatarImage.setUrl(invitingUser.getAvatarId());
|
||||
avatarImage.setVisible(true);
|
||||
confirmRequest.setType(ButtonType.PRIMARY);
|
||||
confirmRequest.setEnabled(true);
|
||||
loading.removeFromParent();
|
||||
|
@ -65,6 +69,28 @@ public class AccessViaInviteDialog extends Composite {
|
|||
m.setTitle(headerText);
|
||||
m.show();
|
||||
}
|
||||
|
||||
@UiHandler("close")
|
||||
void handleClick(ClickEvent e) {
|
||||
m.hide();
|
||||
}
|
||||
@UiHandler("confirmRequest")
|
||||
void confirm(ClickEvent e) {
|
||||
helpBlock.setText("Registering to " + myVRE.getName() + " please wait ... ");
|
||||
loading.setVisible(true);
|
||||
joinService.registerUser(myVRE.getinfraScope(), myVRE.getId(), IS_INVITATION, new AsyncCallback<Boolean>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(Boolean result) {
|
||||
Location.assign(myVRE.getFriendlyURL());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
confirmRequest.removeFromParent();
|
||||
m.setTitle("An error occurred! Your request has not been sent");
|
||||
helpBlock.setText("An email with the cause of the error has been sent to the support team, we'll be back to you shortly.");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,106 +0,0 @@
|
|||
package org.gcube.portlets.user.joinvre.server;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Properties;
|
||||
|
||||
import javax.mail.Address;
|
||||
import javax.mail.Message;
|
||||
import javax.mail.Session;
|
||||
import javax.mail.Transport;
|
||||
import javax.mail.internet.InternetAddress;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
|
||||
import org.gcube.common.portal.PortalContext;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
/**
|
||||
* A class for sending email
|
||||
*
|
||||
* @author M. Assante
|
||||
*
|
||||
*/
|
||||
public class EmailNotification {
|
||||
private static final String SENDER_EMAIL = "notificationSenderEmail";
|
||||
private static final String GATEWAY_NAME = "portalinstancename";
|
||||
/**
|
||||
* The sender of the email
|
||||
*/
|
||||
private String emailSender;
|
||||
|
||||
/**
|
||||
* The recipients of the email
|
||||
*/
|
||||
private String emailrecipients[];
|
||||
|
||||
/**
|
||||
* Email's subject
|
||||
*/
|
||||
private String emailSubject;
|
||||
|
||||
/**
|
||||
* Email's body message
|
||||
*/
|
||||
private String emailBody;
|
||||
|
||||
private String portalName;
|
||||
|
||||
/** Logger */
|
||||
private static Logger _log = LoggerFactory.getLogger(EmailNotification.class);
|
||||
|
||||
/**
|
||||
* Class's constructor
|
||||
*
|
||||
* @param sender
|
||||
* @param recipients
|
||||
* @param subject
|
||||
* @param body
|
||||
*/
|
||||
public EmailNotification(String sender, String recipients[], String subject, String body) {
|
||||
this.emailSender = PortalContext.getConfiguration().getSenderEmail();
|
||||
this.emailrecipients = recipients;
|
||||
this.emailSubject = subject;
|
||||
this.emailBody = body;
|
||||
this.portalName = PortalContext.getConfiguration().getGatewayName();
|
||||
}
|
||||
|
||||
public void sendEmail() {
|
||||
Properties props = System.getProperties();
|
||||
String mailServiceHost = "localhost";
|
||||
props.put("mail.smtp.host", mailServiceHost);
|
||||
String mailServicePort = "25";
|
||||
props.put("mail.smtp.port", mailServicePort);
|
||||
Session session = Session.getDefaultInstance(props, null);
|
||||
session.setDebug(true);
|
||||
Message mimeMessage = new MimeMessage(session);
|
||||
|
||||
try {
|
||||
// EMAIL SENDER
|
||||
Address from = new InternetAddress(emailSender, portalName);
|
||||
mimeMessage.setHeader("Content-Type", "text/html; charset=UTF-8");
|
||||
mimeMessage.setFrom(from);
|
||||
|
||||
// EMAIL RECIPIENTS
|
||||
for (int i=0; i<emailrecipients.length; i++) {
|
||||
Address address = new InternetAddress(emailrecipients[i]);
|
||||
mimeMessage.addRecipient(Message.RecipientType.TO, address);
|
||||
|
||||
}
|
||||
|
||||
mimeMessage.setSubject(emailSubject);
|
||||
// mimeMessage.setText(emailBody);
|
||||
mimeMessage.setContent(emailBody, "text/html; charset=UTF-8");
|
||||
mimeMessage.setSentDate(new Date());
|
||||
Transport.send(mimeMessage);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
_log.error("Failed to send the email message.", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -6,8 +6,6 @@ import java.util.Date;
|
|||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.gcube.application.framework.core.session.ASLSession;
|
||||
import org.gcube.application.framework.core.session.SessionManager;
|
||||
import org.gcube.common.portal.CustomAttributeKeys;
|
||||
|
@ -19,8 +17,6 @@ import org.gcube.portal.databook.server.DatabookStore;
|
|||
import org.gcube.portal.databook.shared.Invite;
|
||||
import org.gcube.portal.databook.shared.InviteStatus;
|
||||
import org.gcube.portal.databook.shared.UserInfo;
|
||||
import org.gcube.portal.databook.shared.ex.InviteIDNotFoundException;
|
||||
import org.gcube.portal.databook.shared.ex.InviteStatusNotFoundException;
|
||||
import org.gcube.portlets.user.joinvre.client.JoinService;
|
||||
import org.gcube.portlets.user.joinvre.shared.UserBelonging;
|
||||
import org.gcube.portlets.user.joinvre.shared.VRE;
|
||||
|
@ -81,7 +77,7 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
|
|||
*/
|
||||
public String getDevelopmentUser() {
|
||||
String user = TEST_USER;
|
||||
// user = "andrea.rossi";
|
||||
// user = "andrea.rossi";
|
||||
return user;
|
||||
}
|
||||
|
||||
|
@ -399,7 +395,7 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
|
|||
try {
|
||||
ASLSession session = getASLSession();
|
||||
String username = session.getUsername();
|
||||
|
||||
String gatewayURL = PortalContext.getConfiguration().getGatewayURL(getThreadLocalRequest());
|
||||
_log.debug("registerUser " +username + " to "+ scope);
|
||||
GCubeUser currUser = um.getUserByUsername(username);
|
||||
GroupManager gm = new LiferayGroupManager();
|
||||
|
@ -417,11 +413,11 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
|
|||
if (inviteId != null) {
|
||||
Invite invite = store.readInvite(inviteId);
|
||||
store.setInviteStatus(scope, session.getUserEmailAddress(), InviteStatus.ACCEPTED);
|
||||
LoginServiceUtil.notifyUserAcceptedInvite(username, scope, getPortalBasicUrl(), gatewayName, invite);
|
||||
LoginServiceUtil.notifyUserAcceptedInvite(username, scope, gatewayURL, gatewayName, invite);
|
||||
}
|
||||
}
|
||||
else {
|
||||
LoginServiceUtil.notifyUserSelfRegistration(username, scope, getPortalBasicUrl(), gatewayName);
|
||||
LoginServiceUtil.notifyUserSelfRegistration(username, scope, gatewayURL, gatewayName);
|
||||
_log.info("notifyUserSelfRegistration sent");
|
||||
}
|
||||
}
|
||||
|
@ -443,23 +439,6 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
|
|||
}
|
||||
return store;
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @return the portal basic url, e.g. http://www.foo.com
|
||||
*/
|
||||
private String getPortalBasicUrl() {
|
||||
HttpServletRequest request = this.getThreadLocalRequest();
|
||||
String toReturn = "";
|
||||
//protocol
|
||||
String protocol = (request.isSecure()) ? "https://" : "http://" ;
|
||||
toReturn += protocol;
|
||||
//server name
|
||||
toReturn += request.getServerName();
|
||||
//port
|
||||
toReturn += (request.getServerPort() == 80) ? "" : ":"+request.getServerPort() ;
|
||||
//_log.trace("getPortalBasicUrl: " +toReturn + "request.getServerPort: " + request.getServerPort());
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String isExistingInvite(long groupId) {
|
||||
|
@ -482,7 +461,7 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
|
|||
}
|
||||
}
|
||||
_log.debug("checking if invite exists for " + email + " on " +infraScope);
|
||||
|
||||
|
||||
return store.isExistingInvite(infraScope, email);
|
||||
}
|
||||
|
||||
|
@ -495,8 +474,8 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
|
|||
return new UserInfo(
|
||||
inviter.getUsername(),
|
||||
inviter.getFullname(),
|
||||
"/image/user_male_portrait?img_id="+inviter.getUserAvatarId(),
|
||||
"", "", true, false, null); //TODO: review this method the image don't work
|
||||
inviter.getUserAvatarURL(),
|
||||
"", "", true, false, null);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.gcube.common.portal.PortalContext;
|
||||
import org.gcube.common.portal.mailing.EmailNotification;
|
||||
import org.gcube.portal.databook.shared.Invite;
|
||||
import org.gcube.vomanagement.usermanagement.GroupManager;
|
||||
import org.gcube.vomanagement.usermanagement.UserManager;
|
||||
|
@ -134,7 +134,7 @@ public class LoginServiceUtil {
|
|||
|
||||
adminEmails.toArray(allMails);
|
||||
|
||||
EmailNotification mailToAdmin = new EmailNotification(PortalContext.getConfiguration().getSenderEmail(), allMails , "[" + gatewayName + "] - Join Request", body.toString());
|
||||
EmailNotification mailToAdmin = new EmailNotification(allMails , "[" + gatewayName + "] - Join Request", body.toString());
|
||||
|
||||
mailToAdmin.sendEmail();
|
||||
}
|
||||
|
@ -155,31 +155,25 @@ public class LoginServiceUtil {
|
|||
|
||||
StringBuffer body = new StringBuffer();
|
||||
body.append("<p>Dear manager of "+ scope +",<br />this email message was automatically generated by " + portalbasicurl +" to inform you that ");
|
||||
body.append("</p>");
|
||||
body.append("<p>");
|
||||
body.append("<b>"+name + " " + lastname +"</b> has self registered to the following environment: ");
|
||||
body.append("<br /><br />");
|
||||
body.append("<b>" + scope+"</b>");
|
||||
body.append("<br />");
|
||||
body.append("<br />");
|
||||
body.append("<b>Username: </b>" + username);
|
||||
body.append("<br />");
|
||||
body.append("<b>e-mail: </b>" + currUser.getEmail());
|
||||
body.append("</p>");
|
||||
body.append("<p>");
|
||||
body.append("<br />" + portalbasicurl);
|
||||
body.append("</p>");
|
||||
body.append("<p>");
|
||||
body.append("WARNING / LEGAL TEXT: This message is intended only for the use of the individual or entity to which it is addressed and may contain"+
|
||||
" information which is privileged, confidential, proprietary, or exempt from disclosure under applicable law. " +
|
||||
"If you are not the intended recipient or the person responsible for delivering the message to the intended recipient, you are strictly prohibited from disclosing, distributing, copying, or in any way using this message.");
|
||||
body.append("</p>");
|
||||
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>");
|
||||
|
||||
String[] allMails = new String[adminEmails.size()];
|
||||
|
||||
adminEmails.toArray(allMails);
|
||||
|
||||
EmailNotification mailToAdmin = new EmailNotification("no-reply@d4science.org", allMails , "[" + gatewayName + "] - Self Registration", body.toString());
|
||||
EmailNotification mailToAdmin = new EmailNotification(allMails , "[" + gatewayName + "] - Self Registration", body.toString());
|
||||
|
||||
mailToAdmin.sendEmail();
|
||||
}
|
||||
|
@ -202,31 +196,27 @@ public class LoginServiceUtil {
|
|||
|
||||
StringBuffer body = new StringBuffer();
|
||||
body.append("<p>Dear manager of "+ scope +",<br />this email message was automatically generated by " + portalbasicurl +" to inform you that ");
|
||||
body.append("</p>");
|
||||
body.append("<p>");
|
||||
body.append("<b>"+name + " " + lastname +"</b> has accepted an invitation to the following environment: ");
|
||||
body.append("<br /><br />");
|
||||
body.append("<b>" + scope+"</b>");
|
||||
body.append("<br />");
|
||||
body.append("<br />");
|
||||
body.append("<b>Username: </b>" + username);
|
||||
body.append("<br />");
|
||||
body.append("<b>e-mail: </b>" + currUser.getEmail());
|
||||
body.append("</p>");
|
||||
body.append("<p>");
|
||||
body.append("<b>The invitation was sent by " + invite.getSenderFullName() +" (" + invite.getSenderUserId()+") on " + invite.getTime()+"</b>");
|
||||
body.append("</p>");
|
||||
body.append("<p>");
|
||||
body.append("WARNING / LEGAL TEXT: This message is intended only for the use of the individual or entity to which it is addressed and may contain"+
|
||||
" information which is privileged, confidential, proprietary, or exempt from disclosure under applicable law. " +
|
||||
"If you are not the intended recipient or the person responsible for delivering the message to the intended recipient, you are strictly prohibited from disclosing, distributing, copying, or in any way using this message.");
|
||||
body.append("</p>");
|
||||
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>");
|
||||
|
||||
|
||||
String[] allMails = new String[adminEmails.size()];
|
||||
|
||||
adminEmails.toArray(allMails);
|
||||
|
||||
EmailNotification mailToAdmin = new EmailNotification("no-reply@d4science.org", allMails , "[" + gatewayName + "] - Accepted Invitation", body.toString());
|
||||
EmailNotification mailToAdmin = new EmailNotification(allMails , "[" + gatewayName + "] - Accepted Invitation", body.toString());
|
||||
|
||||
mailToAdmin.sendEmail();
|
||||
}
|
||||
|
|
|
@ -20,16 +20,12 @@ import com.liferay.portal.theme.ThemeDisplay;
|
|||
|
||||
/**
|
||||
* @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it
|
||||
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||
*/
|
||||
public class JoinVREPortlet extends GenericPortlet {
|
||||
|
||||
private static Log _log = LogFactoryUtil.getLog(JoinVREPortlet.class);
|
||||
|
||||
public void doView(RenderRequest request, RenderResponse response)
|
||||
throws PortletException, IOException {
|
||||
_log.info("************************* Rendering JoinVRE Portlet");
|
||||
|
||||
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
|
||||
response.setContentType("text/html");
|
||||
try {
|
||||
ScopeHelper.setContext(request);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<inherits name='com.google.gwt.activity.Activity' />
|
||||
<inherits name="com.github.gwtbootstrap.Bootstrap" />
|
||||
<inherits name='org.gcube.portal.databook.GCubeSocialNetworking' />
|
||||
<!-- <set-property name="user.agent" value="gecko1_8,safari" /> -->
|
||||
<!-- <set-property name="user.agent" value="gecko1_8" /> -->
|
||||
|
||||
<!-- Specify the app entry point class. -->
|
||||
<entry-point class='org.gcube.portlets.user.joinvre.client.JoinVRE' />
|
||||
|
|
Loading…
Reference in New Issue