The CreatorCon Call for Content is officially open! Get started here.

Login redirecting to Service Portal

Cirrus
Kilo Sage

Hi, thought I posted this earlier so apologies if this gets duplicated.

We have just upgraded our dev instance to Madrid, but following the upgrade if an Itil user logs out and then logs back in again, they are redirected to the service portal page. I logged out as myself and then back in as admin, but even then could only get to the sp page. Adding login.do to the url makes no difference. The only way to get back in is to kill the current browser session and start again. Has anyone else experienced this or can advise what settings could be driving this.

We have no LDAP integration in DEV, and I have unchecked the system property for using LDAP for password authentication. All passwords for Dev are set by admin in the sys_user table

 

Thanks

1 ACCEPTED SOLUTION

Cirrus
Kilo Sage

Ended up raising this in HI but still dont have a solution

View solution in original post

8 REPLIES 8

Let me check this on other browser,

 

Because it works like a charm in my development instance.

Cirrus
Kilo Sage

Ended up raising this in HI but still dont have a solution

Hi Cirrus,

 

I would like to get an update on this.

 

Thanks,

Vivek

@Vivek Verma Can you help me on the topic:

I have to set the redirection rule for users having particular role to Service Portal and CSM portal, However i am facing issues with the SPentry page script:

I have the below issues:

  1. User if remove the "/sp" or "/csm" manually then it should redirect to Platform, However it always redirects to portal on the condition
  2. For the declaration below:   var isExternal = (!user.hasRole('admin') && !user.hasRole('snc_internal')) && user.hasRole('snc_external');  if i assign any other role for a user Who already has "snc_external" role then still the user is routed to CSM portal and not platform, how can i query users with having these roles exactly
  3. for the users added to the stakeholder group only, they should redirect to Service portal, if they are added to any other group having roles then they should route to the platform which is not happening.

Below is the script include:

Below is the Script for SPentryPage:

var SPEntryPage = Class.create();

SPEntryPage.prototype = {

initialize: function() {
this.logVariables = false; // for debugging
this.portal = "/sp/"; // The URL suffix specified in the sp_portal record
this.kbPortal = "/kb/";
this.csmPortal = "/csm/";
},

/***
*
* Referred to by property: glide.entry.page.script
*
**/
getLoginURL: function() {
// When requesting a page directly (eg: /problem_list.do)
// The platform session_timeout.do sets the login page to welcome.do
// Since we are handling the login, clear that value
var session = gs.getSession();
var nt = session.getProperty("nav_to");
var sPage = session.getProperty("starting_page");
if (nt == "welcome.do")
session.clearProperty("nav_to");

if (!sPage && !nt)
session.putProperty("starting_page", gs.getProperty("glide.login.home"));

// Send the user to the portal's login page
var portalGR = new GlideRecord("sp_portal");
portalGR.addQuery("url_suffix", this.portal.replace(/\//g, ""));
portalGR.addNotNullQuery("login_page");
portalGR.query();
if (portalGR.next())
return this.portal + "?id=" + portalGR.login_page.id;

// Send to the a default login page
return this.portal + "?id=login";
},

/***
*
* Referred to by property: glide.entry.first.page.script
*
**/
getFirstPageURL: function() {
var session = gs.getSession();
this.logProperties('before', session);

// has roles and is not a Service Portal page - go to UI16
var nt = session.getProperty("nav_to");
var isServicePortalURL = new GlideSPScriptable().isServicePortalURL(nt);
var redirectURL = session.getProperty("login_redirect");

//if added to one group should redirect, but how do i redirect to platform if member of additional groups?
if(user.isMemberOf('Stakeholder Group'))
return this.portal;

//if additional roles added to a user, it still redirects to CSM portal only
var isExternal = (!user.hasRole('admin') && !user.hasRole('snc_internal')) && user.hasRole('snc_external');
// my code here below
var isInternal = user.hasRole('snc_internal');

//if i add manually the roles, it works, but if i add another role, it does not redirect to Platform and the condition is still matched
var isStakeholder = (!user.hasRole('admin')) && user.hasRole('snc_internal') && user.hasRole('approver_user');

if(isInternal && redirectURL){
return this.portal;
}
if(isStakeholder && !redirectURL){
return this.portal;
}

if (isExternal && !redirectURL) {
return this.csmPortal; 
}

if (user.hasRoles() && !redirectURL && !isServicePortalURL)
return;

// user may have logged in from a frame, the /login_redirect.do page will bust out of it
if (!redirectURL) {
// redirectURL is nav_to
// if nav_to == "welcome.do" then use starting_page
var sPage = session.getProperty("starting_page");
if (sPage && nt == "welcome.do")
nt = sPage;

// Avoid a redirect loop to the home page
var ep = gs.getProperty("glide.login.home");
if (nt) {
if (ep == nt)
nt = null;
}
// PRB726860: if page is still welcome.do, go to glide.login.home preserving frameset
if (nt == "welcome.do") {
session.putProperty("nav_to", ep);
return;
}

session.putProperty("login_redirect", nt || "true");
return "/login_redirect.do?sysparm_stack=no";
}

session.clearProperty("login_redirect");
var returnUrl = this.kbPortal;
if (redirectURL && redirectURL != "true") {
var spUrl = new GlideSPScriptable().mapUrlToSPUrl(redirectURL);
returnUrl = spUrl ? this.portal + "?" + spUrl : redirectURL;
}

this.logProperties('after', session);
if (!this.logVariables) {
gs.log('redirectURL: ' + redirectURL);
gs.log('User: ' + user.getName());
gs.log('is internal: ' + (!user.hasRoles()));
gs.log('returnUrl: ' + returnUrl);
}

return returnUrl;
},

logProperties: function(beforeOrAfter, session) {
if (!this.logVariables)
return;

gs.log('SPEntryPage: Redirect ------------------------------- ' + beforeOrAfter);
gs.log('session.starting_page: ' + session.getProperty("starting_page"));
gs.log('session.nav_to: ' + session.getProperty("nav_to"));
gs.log('session.login_redirect: ' + session.getProperty("login_redirect"));
gs.log('gs.fURI: ' + session.getURI());
},

type: 'SPEntryPage'
};