i would like to certain groups like desktop support support itil to access sow and not native ui
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-14-2025 11:13 PM
i would like to certain groups like desktop support support itil to access sow and not native ui , how it can be done ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-18-2025 06:26 AM
@jcmings is does look correct ?
/**
*
* Service Portal sample script include to indicate
* 1. which login page should be used
* 2. the starting page after the user is authenticated
*
* Script is configured using system properties
* PROPERTY VALUE
* glide.entry.page.script new SPEntryPage().getLoginURL();
* glide.entry.first.page.script new SPEntryPage().getFirstPageURL();
*
* functions can return a path or null if no overrides are necessary
*
**/
var SPEntryPage = Class.create();
SPEntryPage.prototype = {
initialize: function() {
this.logVariables = false; // for debugging
this.portal = this.getDefaultPortal(); // The URL suffix for default portal
},
/***
*
* Fetch the default portal suffix
*
**/
getDefaultPortal: function() {
var gr = new GlideRecord("sp_portal");
gr.addQuery("default", true);
gr.query();
if (gr.next())
return "/" + gr.getValue("url_suffix") + "/";
return "/esc/";
},
/***
*
* Referred to by property: glide.entry.page.script
*
**/
getLoginURL: function() {
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"));
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;
return this.portal + "?id=login";
},
/***
*
* Referred to by property: glide.entry.first.page.script
*
**/
getFirstPageURL: function() {
var session = gs.getSession();
// ======= START: Custom redirect for restricted users to SOW =======
var currentUser = gs.getUserID();
// Replace these with actual sys_ids of the restricted groups
var restrictedGroups = [
'REPLACE_WITH_GROUP_SYS_ID_1',
'REPLACE_WITH_GROUP_SYS_ID_2'
];
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('user', currentUser);
grMember.addQuery('group', 'IN', restrictedGroups.join(','));
grMember.setLimit(1);
grMember.query();
if (grMember.hasNext()) {
return '/now/workspace/service-operations/';
}
// ======= END: Custom redirect for restricted users to SOW =======
this.logProperties('before', session);
var nt = session.getProperty("nav_to");
var isServicePortalURL = new GlideSPScriptable().isServicePortalURL(nt);
var redirectURL = session.getProperty("login_redirect");
if (user.hasRoles() && !redirectURL && !isServicePortalURL)
return;
if (!redirectURL) {
var sPage = session.getProperty("starting_page");
if (sPage && nt == "welcome.do")
nt = sPage;
var ep = gs.getProperty("glide.login.home");
if (nt) {
if (ep == nt)
nt = null;
}
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");
session.clearProperty("nav_to");
if (redirectURL && redirectURL.indexOf("sys_attachment.do") > -1)
return redirectURL;
var returnUrl = this.portal;
if (redirectURL && redirectURL != "true") {
var spUrl = new GlideSPScriptable().mapUrlToSPUrl(redirectURL);
returnUrl = spUrl ? this.portal + "?" + spUrl : redirectURL;
if (!user.hasRoles() && !spUrl && redirectURL.indexOf("home_splash.do") > -1)
returnUrl = this.portal;
}
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'
};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-19-2025 06:22 PM
any one can comment?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-21-2025 08:39 AM
I believe when we'd modified that in the script we did something like if (gs.getUser().isMemberOf('group'), redirect. Your method may work too. Have you tested it? There are likely multiple posts on SPEntryPage online.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-21-2025 02:58 PM
@jcmings is it something like this :
var session = gs.getSession();
// ======= START: Simple group-based redirect using isMemberOf =======
if (gs.getUser().isMemberOf('your_group_name_here')) {
return '/now/workspace/service-operations/';
}
// ======= END =======
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-21-2025 03:36 PM
@chercm It looks like users have found success using role-based redirection rather than groups. That's not to say that groups wouldn't work, but check out this community post where someone describes using roles. KB0746730 also outlines this with a YouTube video.