概要
ServiceNowでユーザーがログインしたときに何らかの処理をキックしたい場合に使用する。
Script Actionで「session.established」イベント発生時の処理を書く。
注意点として、このスクリプトの起動ユーザーは「system」となっているため、
gs.getUserName()
で取得できるユーザーは、ログインしたユーザーではなく、常に「system」となっている点だ。
ログインユーザーのユーザー名はイベントの引数として受け取ることが可能だ。
event.parm1
環境
ServiceNow : KINGSTONE
手順
Script Action作成
StudioからCreate Application Fileで起動される画面で、
「Server Development」カテゴリの「Script Action」を選択してCreateをクリックする。
Nameは適当につける。
Event Nameには、「session.established」を選択する。
コード入力
Scriptに次のように入力してSubmitで保存する。
今回は、特に有用な処理は記載していない。
「gs.getUserName」では必ず「system」が取得される事と、
event.param1でユーザー名、event.param2でアクセス元のIPアドレスが渡されていることをアプリケーションログに出力して確認している。
また、ついでにユーザーテーブルからログインしたユーザーの情報を取得してログに出力している。
gs.info("ログインイベント発生");
gs.info("ログインユーザー名 = " + gs.getUserName());
gs.info('event.parm1 = ' + event.parm1);
gs.info('event.parm2 = ' + event.parm2);
var userid = event.parm1;
var r = new GlideRecord('sys_user');
r.addQuery('user_name', userid);
r.query();
if (r.next()) {
var l = r.getValue('preferred_language');
gs.info('ユーザーのpreferred_languageは、 ' + l);
} else {
gs.info('ユーザー検索失敗');
}
動作確認
adminなどでログインしている場合は、一旦ログアウトしてから、ServiceNowにログインし直してからアプリケーションログを確認する。
今回は「testu」というユーザー名でログインしている。
「gs.getUserName()」と「event.parm1」の出力の違いが確認できる。
※IPアドレス部分は画像加工している。
※ログの表示順は時間順にしているがミリ秒単位での並べかえとなっていないため、出力順と異なる。
この他のログイン関連のイベントスクリプトについて
スクリプト起動のイベントとして「login.faildやlogin.authoraization.failedイベントを選択可能だ。
ログイン成功時のみではなく、ログイン失敗時の処理も書く事が可能だ。