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

Check if loggedin user is member of group or has an admin role in client script

Rocky5
Kilo Sage

Hello Experts,

 

I have below script include and catalog client script to check if loggedin user is member of  group, but it is not working. Even though user is member of group, it is considering as not a member and alert('3'); is displayed.

 

Script Include:

var checkGroupMember = Class.create();
checkGroupMember.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    checkGroup: function() {
        var grp = this.getParameter('sysparm_grp');
        return gs.getUser().isMemberOf(grp);
    },
    type: 'checkGroupMember'
});

Catalog Client script:
function onLoad() {
    //Type appropriate comment here, and begin script below
    var ga = new GlideAjax('checkGroupMember');
    ga.addParam('sysparm_name', 'checkGroup');
    ga.addParam('sysparm_grp','k46fc499db8bcc95ed9dff00ba96196b')
    ga.getXML(callback);

    function callback(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
        alert('1');
        if (answer == 'true') {
            alert('2');
            g_form.addOption('select_a_request_type', 'Remove Option','Remove Option');
        }else{
            alert('3');
            g_form.removeOption('select_a_request_type','Remove Option','Remove Option');
        }
    }
}

In addition to this, I want to override this for admin users as well, how can I achieve that.

 
Thanks,
Rocky.
2 REPLIES 2

Brad Bowman
Kilo Patron
Kilo Patron

Try alerting on answer to see what value it contains, then if it is not what you expect, add logs to the Script Include and/or break up the return to clarify what is happening and add the admin override - whichever value you mean by that:

var checkGroupMember = Class.create();
checkGroupMember.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    checkGroup: function() {
        var answer = '';
        var grp = this.getParameter('sysparm_grp');
        gs.info('SI grp = ' + grp);
        answer = gs.getUser().isMemberOf(grp);
        gs.info('SI answer= ' + answer);
        if (gs.getUser().hasRole('admin')) {
            answer = 'true';
        }
        return answer;
    },
    type: 'checkGroupMember'
});

 

mjmurugan
Tera Contributor

@Rocky5 Can you pass group name instead of sys_id in this line ga.addParam('sysparm_grp','k46fc499db8bcc95ed9dff00ba96196b') and check it.