- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
10-05-2022 09:04 PM
adminを持っていないユーザーに対して、ログインを行った後にサービスポータルに遷移させたいです。
製品ドキュメントを参考にsys_properties テーブルにプロパティを追加。
その後、スクリプトインクルード(SPEntryPage)を以下のように修正しました。
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 (user.hasRoles("admin") && !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");
session.clearProperty("nav_to");
var returnUrl = this.portal;
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'
};
しかし、adminを持っていないユーザーで再ログインしたところ、UI16(開発者画面)に遷移してしまいました。
解決方法をご存知の方いらっしゃいましたら教えていただけると幸いです。
分かりにくくすみません。
◆参考にした製品ドキュメント
シングル サインオン、ログイン、および URL リダイレクト (servicenow.com)
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
10-07-2022 12:49 AM - 編集済み 10-07-2022 01:42 AM
返信いただきありがとうございます。
if (user.hasRole() && !redirectURL &&& !isServicePortalURL)と修正することで私の考えていた動きをしてくれました!
ありがとうございました。
◆参考サイト
https://qiita.com/htshozawa/items/f76615b1acaad3d5c68b
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
10-06-2022 06:50 PM
こんにちは。
日本語で参考になる記事がありましたので共有します。
https://qiita.com/okamit/items/d61584cb56c46385bf6c
この文中に以下のように記載されています。
(2-3) 69-70行目あたりを編集し、本スクリプトを適用 させない ユーザーの条件を指定します
※デフォルトではログイン試行ユーザーがロールを持っている場合に適用 させない 設定になっています
getFirstPageURL: function() {
......
if (user.hasRoles() && !redirectURL && !isServicePortalURL) //<- ココ
return;
......
user.hasroles()はユーザーがロールを持っていないと言う指定になりますので、作成された構文を以下のように指定すればいいと思います。
if (!user.hasRoles("admin") && !redirectURL && !isServicePortalURL) //<- ココ
return;
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
10-07-2022 12:49 AM - 編集済み 10-07-2022 01:42 AM
返信いただきありがとうございます。
if (user.hasRole() && !redirectURL &&& !isServicePortalURL)と修正することで私の考えていた動きをしてくれました!
ありがとうございました。
◆参考サイト
https://qiita.com/htshozawa/items/f76615b1acaad3d5c68b