self registration almost complete
git-svn-id: https://svn.research-infrastructures.eu/d4science/gcube/trunk/portlets/user/join-vre@126074 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
c82d04328d
commit
5183a676f1
|
@ -23,4 +23,6 @@ public interface JoinService extends RemoteService {
|
||||||
VRE getSelectedVRE(Long vreId);
|
VRE getSelectedVRE(Long vreId);
|
||||||
|
|
||||||
void addMembershipRequest(String scope, String optionalMessage);
|
void addMembershipRequest(String scope, String optionalMessage);
|
||||||
|
|
||||||
|
boolean registerUser(String scope, long vreId, boolean isInvitation);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,4 +21,7 @@ public interface JoinServiceAsync {
|
||||||
|
|
||||||
void addMembershipRequest(String scope, String optionalMessage,
|
void addMembershipRequest(String scope, String optionalMessage,
|
||||||
AsyncCallback<Void> callback);
|
AsyncCallback<Void> callback);
|
||||||
|
|
||||||
|
void registerUser(String scope, long vreId, boolean isInvitation,
|
||||||
|
AsyncCallback<Boolean> callback);
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class JoinVRE implements EntryPoint {
|
||||||
default: //Not belonging
|
default: //Not belonging
|
||||||
logger.log(Level.INFO, "User is NOT Belonging");
|
logger.log(Level.INFO, "User is NOT Belonging");
|
||||||
rp = displayVREs();
|
rp = displayVREs();
|
||||||
rp.requestMembership(vre);
|
rp.requestMembership(vre, vre.getinfraScope(), false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import java.util.LinkedHashMap;
|
||||||
|
|
||||||
import org.gcube.portlets.user.joinvre.client.JoinService;
|
import org.gcube.portlets.user.joinvre.client.JoinService;
|
||||||
import org.gcube.portlets.user.joinvre.client.JoinServiceAsync;
|
import org.gcube.portlets.user.joinvre.client.JoinServiceAsync;
|
||||||
|
import org.gcube.portlets.user.joinvre.client.ui.AccessVREDialog;
|
||||||
import org.gcube.portlets.user.joinvre.client.ui.RequestMembershipDialog;
|
import org.gcube.portlets.user.joinvre.client.ui.RequestMembershipDialog;
|
||||||
import org.gcube.portlets.user.joinvre.client.ui.VreThumbnail;
|
import org.gcube.portlets.user.joinvre.client.ui.VreThumbnail;
|
||||||
import org.gcube.portlets.user.joinvre.shared.VRE;
|
import org.gcube.portlets.user.joinvre.shared.VRE;
|
||||||
|
@ -19,7 +20,7 @@ import com.google.gwt.user.client.ui.HTML;
|
||||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||||
|
|
||||||
public class ResponsivePanel extends Composite {
|
public class ResponsivePanel extends Composite {
|
||||||
|
|
||||||
private final JoinServiceAsync joinService = GWT.create(JoinService.class);
|
private final JoinServiceAsync joinService = GWT.create(JoinService.class);
|
||||||
public static final String loading = GWT.getModuleBaseURL() + "../images/vre-loader.gif";
|
public static final String loading = GWT.getModuleBaseURL() + "../images/vre-loader.gif";
|
||||||
|
|
||||||
|
@ -42,7 +43,7 @@ public class ResponsivePanel extends Composite {
|
||||||
header.setSubtext(cat.getDescription());
|
header.setSubtext(cat.getDescription());
|
||||||
mainPanel.add(header);
|
mainPanel.add(header);
|
||||||
mainPanel.add(getVREThumbnails(categories, cat));
|
mainPanel.add(getVREThumbnails(categories, cat));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,15 +67,21 @@ public class ResponsivePanel extends Composite {
|
||||||
}
|
}
|
||||||
return toReturn;
|
return toReturn;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void showError(String message) {
|
protected void showError(String message) {
|
||||||
mainPanel.clear();
|
mainPanel.clear();
|
||||||
mainPanel.add(new HTML("<div class=\"frame\" style=\"font-size: 16px;\">" + message + ". Please <a href=\"javascript: location.reload();\">reload</a> this page.</div>"));
|
mainPanel.add(new HTML("<div class=\"frame\" style=\"font-size: 16px;\">" + message + ". Please <a href=\"javascript: location.reload();\">reload</a> this page.</div>"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void requestMembership(VRE vre) {
|
public void requestMembership(VRE vre, String scope, boolean isInvitation) {
|
||||||
RequestMembershipDialog modal = new RequestMembershipDialog(vre);
|
if (vre.isUponRequest()) {
|
||||||
modal.show();
|
RequestMembershipDialog modal = new RequestMembershipDialog(vre);
|
||||||
|
modal.show();
|
||||||
|
} else {
|
||||||
|
AccessVREDialog modal = new AccessVREDialog(vre, isInvitation);
|
||||||
|
modal.show();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
package org.gcube.portlets.user.joinvre.client.ui;
|
||||||
|
|
||||||
|
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.Modal;
|
||||||
|
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.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 AccessVREDialog extends Composite {
|
||||||
|
private final JoinServiceAsync joinService = GWT.create(JoinService.class);
|
||||||
|
private static AccessVREDialogUiBinder uiBinder = GWT
|
||||||
|
.create(AccessVREDialogUiBinder.class);
|
||||||
|
|
||||||
|
interface AccessVREDialogUiBinder extends UiBinder<Widget, AccessVREDialog> {
|
||||||
|
}
|
||||||
|
@UiField Modal m;
|
||||||
|
@UiField Button close;
|
||||||
|
@UiField Button confirmRequest;
|
||||||
|
@UiField HelpBlock helpBlock;
|
||||||
|
private boolean isInvitation = false;
|
||||||
|
VRE myVRE = null;
|
||||||
|
public AccessVREDialog(final VRE vre, boolean isInvitation) {
|
||||||
|
initWidget(uiBinder.createAndBindUi(this));
|
||||||
|
this.myVRE = vre;
|
||||||
|
this.isInvitation = isInvitation;
|
||||||
|
String text = isInvitation ? "To accept the invite, please click on the accept invite button below" : "You are about to enter the " + vre.getName() + ", please confirm your request.";
|
||||||
|
helpBlock.setText(text);
|
||||||
|
String buttonText = isInvitation ? "Accept invite" : "Confirm Request";
|
||||||
|
confirmRequest.setText(buttonText);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void show() {
|
||||||
|
String headerText = isInvitation ? "Invitation to " + myVRE.getName() : "Join request for " + myVRE.getName();
|
||||||
|
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 ... ");
|
||||||
|
joinService.registerUser(myVRE.getinfraScope(), myVRE.getId(), isInvitation, 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.");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
|
||||||
|
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
|
||||||
|
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:b="urn:import:com.github.gwtbootstrap.client.ui">
|
||||||
|
<g:HTMLPanel>
|
||||||
|
<b:Modal ui:field="m" title="My Modal" backdrop="STATIC"
|
||||||
|
keyboard="true" animation="true">
|
||||||
|
|
||||||
|
<b:HelpBlock ui:field="helpBlock"></b:HelpBlock>
|
||||||
|
<b:HelpBlock>
|
||||||
|
By entering this VRE you agree to the terms indicated in the
|
||||||
|
<a href="/web/guest/terms-of-use" target="_blank">Terms of Use</a>
|
||||||
|
of this gateway.
|
||||||
|
</b:HelpBlock>
|
||||||
|
<b:ModalFooter>
|
||||||
|
<b:Button type="PRIMARY" ui:field="confirmRequest">Confirm Request</b:Button>
|
||||||
|
<b:Button type="DEFAULT" ui:field="close">Close</b:Button>
|
||||||
|
</b:ModalFooter>
|
||||||
|
</b:Modal>
|
||||||
|
</g:HTMLPanel>
|
||||||
|
</ui:UiBinder>
|
|
@ -15,7 +15,6 @@ import com.google.gwt.uibinder.client.UiField;
|
||||||
import com.google.gwt.uibinder.client.UiHandler;
|
import com.google.gwt.uibinder.client.UiHandler;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.HTML;
|
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
|
|
||||||
public class RequestMembershipDialog extends Composite {
|
public class RequestMembershipDialog extends Composite {
|
||||||
|
|
|
@ -5,12 +5,18 @@ import java.util.Collections;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.gcube.application.framework.core.session.ASLSession;
|
import org.gcube.application.framework.core.session.ASLSession;
|
||||||
import org.gcube.application.framework.core.session.SessionManager;
|
import org.gcube.application.framework.core.session.SessionManager;
|
||||||
import org.gcube.common.portal.CustomAttributeKeys;
|
import org.gcube.common.portal.CustomAttributeKeys;
|
||||||
import org.gcube.common.portal.GCubePortalConstants;
|
import org.gcube.common.portal.GCubePortalConstants;
|
||||||
import org.gcube.common.portal.PortalContext;
|
import org.gcube.common.portal.PortalContext;
|
||||||
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
|
import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper;
|
||||||
|
import org.gcube.portal.databook.server.DBCassandraAstyanaxImpl;
|
||||||
|
import org.gcube.portal.databook.server.DatabookStore;
|
||||||
|
import org.gcube.portal.databook.shared.Invite;
|
||||||
|
import org.gcube.portal.databook.shared.InviteStatus;
|
||||||
import org.gcube.portlets.user.joinvre.client.JoinService;
|
import org.gcube.portlets.user.joinvre.client.JoinService;
|
||||||
import org.gcube.portlets.user.joinvre.shared.UserBelonging;
|
import org.gcube.portlets.user.joinvre.shared.UserBelonging;
|
||||||
import org.gcube.portlets.user.joinvre.shared.VRE;
|
import org.gcube.portlets.user.joinvre.shared.VRE;
|
||||||
|
@ -48,6 +54,7 @@ import com.liferay.portal.util.PortalUtil;
|
||||||
public class JoinServiceImpl extends RemoteServiceServlet implements JoinService {
|
public class JoinServiceImpl extends RemoteServiceServlet implements JoinService {
|
||||||
private static Log _log = LogFactoryUtil.getLog(JoinServiceImpl.class);
|
private static Log _log = LogFactoryUtil.getLog(JoinServiceImpl.class);
|
||||||
private static final String TEST_USER = "test.user";
|
private static final String TEST_USER = "test.user";
|
||||||
|
private static DatabookStore store;
|
||||||
/**
|
/**
|
||||||
* the current ASLSession
|
* the current ASLSession
|
||||||
* @return the session
|
* @return the session
|
||||||
|
@ -372,4 +379,65 @@ public class JoinServiceImpl extends RemoteServiceServlet implements JoinService
|
||||||
public String getPortalUrl() throws PortalException, SystemException {
|
public String getPortalUrl() throws PortalException, SystemException {
|
||||||
return PortalUtil.getPortalURL(this.getThreadLocalRequest());
|
return PortalUtil.getPortalURL(this.getThreadLocalRequest());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the user to the VRE, plus send notifications to the vre manages of the vre
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean registerUser(String scope, long groupId, boolean isInvitation) {
|
||||||
|
UserManager userM = new LiferayUserManager();
|
||||||
|
try {
|
||||||
|
ASLSession session = getASLSession();
|
||||||
|
String username = session.getUsername();
|
||||||
|
//add the user to the VRE
|
||||||
|
userM.assignUserToGroup(groupId, userM.getUserId(username));
|
||||||
|
String gatewayName = PortalContext.getConfiguration().getGatewayName();
|
||||||
|
if (isInvitation) {
|
||||||
|
initStore();
|
||||||
|
String inviteId = store.isExistingInvite(scope, session.getUserEmailAddress());
|
||||||
|
if (inviteId != null) {
|
||||||
|
Invite invite = store.readInvite(inviteId);
|
||||||
|
store.setInviteStatus(scope, session.getUserEmailAddress(), InviteStatus.ACCEPTED);
|
||||||
|
LoginServiceUtil.notifyUserAcceptedInvite(username, scope, getPortalBasicUrl(), gatewayName, invite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//LoginServiceUtil.notifyUserSelfRegistration(username, scope, getPortalBasicUrl(), gatewayName);
|
||||||
|
_log.info("notifyUserSelfRegistration sent");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return the unique instance of the store
|
||||||
|
*/
|
||||||
|
public static synchronized DatabookStore initStore() {
|
||||||
|
if (store == null) {
|
||||||
|
store = new DBCassandraAstyanaxImpl();
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ import java.util.Set;
|
||||||
|
|
||||||
import org.gcube.common.portal.PortalContext;
|
import org.gcube.common.portal.PortalContext;
|
||||||
import org.gcube.portal.databook.shared.Invite;
|
import org.gcube.portal.databook.shared.Invite;
|
||||||
import org.gcube.portlets.user.joinvre.shared.VO;
|
|
||||||
import org.gcube.vomanagement.usermanagement.GroupManager;
|
import org.gcube.vomanagement.usermanagement.GroupManager;
|
||||||
import org.gcube.vomanagement.usermanagement.UserManager;
|
import org.gcube.vomanagement.usermanagement.UserManager;
|
||||||
import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault;
|
import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault;
|
||||||
|
@ -145,7 +144,7 @@ public class LoginServiceUtil {
|
||||||
* @param scope .
|
* @param scope .
|
||||||
* @param optionalMessage .
|
* @param optionalMessage .
|
||||||
*/
|
*/
|
||||||
public static void notifyUserSelfRegistration(String username, VO rootVO, String scope, String portalbasicurl, String gatewayName) throws Exception {
|
public static void notifyUserSelfRegistration(String username, String scope, String portalbasicurl, String gatewayName) throws Exception {
|
||||||
|
|
||||||
ArrayList<String> adminEmails = LoginServiceUtil.getAdministratorsEmails(scope);
|
ArrayList<String> adminEmails = LoginServiceUtil.getAdministratorsEmails(scope);
|
||||||
LiferayUserManager um = new LiferayUserManager();
|
LiferayUserManager um = new LiferayUserManager();
|
||||||
|
@ -191,7 +190,7 @@ public class LoginServiceUtil {
|
||||||
* @param scope .
|
* @param scope .
|
||||||
* @param optionalMessage .
|
* @param optionalMessage .
|
||||||
*/
|
*/
|
||||||
public static void notifyUserAcceptedInvite(String username, VO rootVO, String scope, String portalbasicurl, String gatewayName, Invite invite) throws Exception {
|
public static void notifyUserAcceptedInvite(String username, String scope, String portalbasicurl, String gatewayName, Invite invite) throws Exception {
|
||||||
|
|
||||||
ArrayList<String> adminEmails = LoginServiceUtil.getAdministratorsEmails(scope);
|
ArrayList<String> adminEmails = LoginServiceUtil.getAdministratorsEmails(scope);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue