変数セットに作成したマスク済みフィールドを処理で複合化する方法について

Takumi_
Tera Contributor

お世話になります。

表題の件について、ご存じの方がいらっしゃいましたらご教示いただけないでしょうか。

GlideEncrypterはXanadu以降動作しないことを念頭に、別方式にて実装を検討しております。

以下にサンプルソースを記載いたします。
・処理呼び出し:

getPW: function(targetSys_id, RITMNumber) {
        var mtomGR = new GlideRecord('sc_item_option_mtom');
        mtomGR.query();
        var targetItemOptionSysID;
        var pwValue;
        var decryptClass = global.decryptGlideRecord();

        while (mtomGR.next()) {
            if (mtomGR.getDisplayValue('request_item') == RITMNumber) {
                targetItemOptionSysID = mtomGR.getValue('sc_item_option');
                var itemOptionGR = new GlideRecord('sc_item_option');
                itemOptionGR.addQuery('sys_id', targetItemOptionSysID);
                itemOptionGR.query();
                while (itemOptionGR.next()) {
                    if (itemOptionGR.getValue('item_option_new') == targetSys_id) {
                        pwValue = decryptClass.decrypt(itemOptionGR);
                    }
                }
            }
        }
        return pwValue;
    },

 

・複合化処理

var decryptGlideRecord = Class.create();
decryptGlideRecord.prototype = {
    initialize: function() {},
    decrypt: function(obj) {
        var value = obj.getValue('value');
        var decrypted = value.getDecryptedValue();
        return decrypted;
    },
    type: 'decryptGlideRecord'
};

 

1 件の受理された解決策

初回投稿してあるScriptの

var value = obj.getValue('value');
var decrypted = value.getDecryptedValue();

この方法では取得できないと思います。

正しくは
// obj は Requested Item [sc_req_item]である想定。

var decrypted = obj.variables.password_field.getDecryptedValue();

このようになります。
理由はgetValue() した時点で、単純な文字列の値になってしまうのでgetDecryptedValue()が使えません。

問い合わせのタイトルから推測して、Requested Itemのvariablesである想定です。

元の投稿で解決策を見る

4件の返信4

iwai
Giga Sage

Catalog Item Variables の Masked type は getDecryptedValue() を使うだけで良いと思います。すでにそれは知っているようで、他に何か問題があったのでしょうか。

var gr = new GlideRecord('sc_req_item');
if(gr.get('123456789012345678901234567890')){
return gr.variables.password_field.getDecryptedValue();
}

Service Catalog のマスク タイプ変数の使用:サポートとトラブルシューティング (servicenow.com)

Takumi_
Tera Contributor

ご回答ありがとうございます。

getDecryptedValue()では正しい値を取得できなかった為、他の方法を模索しておりました。

原因はいまいちわかっておりません...

初回投稿してあるScriptの

var value = obj.getValue('value');
var decrypted = value.getDecryptedValue();

この方法では取得できないと思います。

正しくは
// obj は Requested Item [sc_req_item]である想定。

var decrypted = obj.variables.password_field.getDecryptedValue();

このようになります。
理由はgetValue() した時点で、単純な文字列の値になってしまうのでgetDecryptedValue()が使えません。

問い合わせのタイトルから推測して、Requested Itemのvariablesである想定です。

Takumi_
Tera Contributor

上記内容で解決できました。

ご回答いただきありがとうございました。