Difference between revisions of "Portal Context"

From Gcube Wiki
Jump to: navigation, search
(PortalContext Usage/Examples)
(PortalContext Usage/Examples)
Line 36: Line 36:
 
</source>
 
</source>
  
Some of the useful methods available:
+
=== Getting the current User ===
  
 
* Get the current '''username of the current user''':
 
* Get the current '''username of the current user''':
Line 60: Line 60:
 
</source>
 
</source>
  
 +
=== Getting the infrastructure context (Scope)  ===
 +
 +
''' Please note:''' the following methods needed to get the infrastructure context work with AJAX calls (i.e. XMLHttpRequest to exchange data with a server behind the scenes) only. If you use standard http GET or POST to  exchange data with a server, you must handle the infrastructure context information differently. Please see the following page for further information: https://wiki.gcube-system.org/gcube/ClientContextLibrary.
  
 
* Get the '''current scope''' (a.k.a. the infrastructure context):
 
* Get the '''current scope''' (a.k.a. the infrastructure context):
Line 81: Line 84:
 
</source>
 
</source>
  
* Get name of the gateway and its URL
+
=== Getting the Infrastructure Gateway info  ===
 +
 
 +
* Get name of the gateway and its URL:
  
 
<source lang="java">
 
<source lang="java">
Line 102: Line 107:
 
</source>
 
</source>
  
 +
=== Getting the Infrastructure information ===
  
* mail sender for the current site
 
<source lang="java">
 
// get the current site email's sender (used when notifications are sent, for example), given the HttpServletRequest
 
String sender = instance.getSenderEmail(request);
 
</source>
 
  
 
* the name of the current infrastructure in which the client is running
 
* the name of the current infrastructure in which the client is running

Revision as of 16:10, 14 November 2016

Introduction

The gCube Portal Manager is a component all portlets need to use to get the portal context where they are running into & to get the centralised email manager for sending emails from your application.

What is a portal context?

It is the component you must use to (programmatically) get:

  • the current user identifier using your webapp/portlet;
  • the current scope (infrastructure context) the user is currently working;
  • the user (authorisation) token for that scope (infrastructure context).

Apart from that, portal context provides your application with contextual information about the gCube Gateway your webapp/portlet is running on, for instance you can:

  • retrieve the list of Virtual Organizations available on a given portal;
  • retrieve the configured senders of emails sent by the portal;
  • retrieve the gateway name.

Maven Dependency

In order to use it in your project, add the following dependency to the project's pom.xml file

<dependency>
	<groupId>org.gcube.common.portal</groupId>
	<artifactId>portal-manager</artifactId>
	<scope>provided</scope>
</dependency>

PortalContext Usage/Examples

First, get an instance of the PortalContext by invoking the static method PortalContext.getConfiguration();

PortalContext instance = PortalContext.getConfiguration();

Getting the current User

  • Get the current username of the current user:
import org.gcube.common.portal;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
...
PortalContext pContext = PortalContext.getConfiguration();
String username = pContext.getCurrentUser(httpServletRequest).getUsername();
import org.gcube.common.portal;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
...
PortalContext pContext = PortalContext.getConfiguration();
GCubeUser theUser = pContext.getCurrentUser(httpServletRequest);

Getting the infrastructure context (Scope)

Please note: the following methods needed to get the infrastructure context work with AJAX calls (i.e. XMLHttpRequest to exchange data with a server behind the scenes) only. If you use standard http GET or POST to exchange data with a server, you must handle the infrastructure context information differently. Please see the following page for further information: https://wiki.gcube-system.org/gcube/ClientContextLibrary.

  • Get the current scope (a.k.a. the infrastructure context):
import org.gcube.common.portal;
...
PortalContext pContext = PortalContext.getConfiguration();
String currentScope = pContext.getCurrentScope(httpServletRequest);
  • Get the current user token:
import org.gcube.common.portal;
...
PortalContext pContext = PortalContext.getConfiguration();
String userToken = pContext.getCurrentUserToken(httpServletRequest);

Getting the Infrastructure Gateway info

  • Get name of the gateway and its URL:
package org.gcube.common.portal;
...
// get the gateway name given the HttpServletRequest
String gatewayName = instance.getGatewayName(request);
 
// get the gateway url given the HttpServletRequest
String gatewayUrl = instance.getGatewayUrl(request);
  • Get landing page path of the current VRE or VO e.g. "/group/i-marine"
package org.gcube.common.portal;
...
// get the landing page path of the current Site e.g. "/group/i-marine"
String landingPagePath = instance.getSiteLandingPagePath(request);

Getting the Infrastructure information

  • the name of the current infrastructure in which the client is running
package org.gcube.common.portal;
....
// get the current infrastructure name
String infrastructureName = instance.getInfrastructureName();
  • retrieve the list of VOs
// get the VOs
List<String> listVo = instance.getVOs();

Centralised Email Manager

The constructor expects the following parameters:

public EmailNotification(String recipient, String subject, String body, HttpServletRequest httpServletRequest)

once the object is instantiated just use the public void sendEmail() method to add the email to queue. The email will be delivered within minutes.

How to use it:

package org.gcube.common.portal.mailing;
 
//instanciate
EmailNotification mailToSend = new EmailNotification(
					email , 
					subject, 
					emailText, 
					request);
//send
mailToSend sendEmail();