How to restrict users to edit HR case form

haripriya5
Tera Expert

I have an requirement to disable the HR case form fields to be disabled if user doesnt belong to a specific group and also has the hr admin role once the state of the case is Completed.

1 ACCEPTED SOLUTION

Jagadish Sanadi
Kilo Sage

Hello Haripriya,

 

Please try this code and confirm

 

// Script Include
var user = gs.getUserID();
var checkUser = new GlideRecord('sys_user_grmember');
checkUser.addQuery('user', user);
checkUser.addQuery('group', gs.getProperty('your_property_name')); // replace <sys_id_group> with actual sys_id of group.
checkUser.query();
if (checkUser.next()) {
return true;
} else {
var uRole = new GlideRecord('sys_user_has_role');
uRole.addEncodedQuery('role.nameSTARTSWITHadmin^user=' + user);
uRole.query();
if (uRole.next()) {
return true;
} else {
return false;
}
}


//Client SCript
if (g_form.getValue('state') == '3') {
var callSI = new GlideAjax('erValidationAjax');
callSI.addParam('sysparm_name', 'checkForRole');
callSI.getXML(callBack);
}


function callBack(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
if (answer == 'true') {
//Nothing


} else {
var fields = g_form.getEditableFields();
for (var x = 0; x < fields.length; x++) {
g_form.setReadOnly(fields[x], true);

}
}

 

 

Please mark useful if my response helped you

View solution in original post

1 REPLY 1

Jagadish Sanadi
Kilo Sage

Hello Haripriya,

 

Please try this code and confirm

 

// Script Include
var user = gs.getUserID();
var checkUser = new GlideRecord('sys_user_grmember');
checkUser.addQuery('user', user);
checkUser.addQuery('group', gs.getProperty('your_property_name')); // replace <sys_id_group> with actual sys_id of group.
checkUser.query();
if (checkUser.next()) {
return true;
} else {
var uRole = new GlideRecord('sys_user_has_role');
uRole.addEncodedQuery('role.nameSTARTSWITHadmin^user=' + user);
uRole.query();
if (uRole.next()) {
return true;
} else {
return false;
}
}


//Client SCript
if (g_form.getValue('state') == '3') {
var callSI = new GlideAjax('erValidationAjax');
callSI.addParam('sysparm_name', 'checkForRole');
callSI.getXML(callBack);
}


function callBack(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
if (answer == 'true') {
//Nothing


} else {
var fields = g_form.getEditableFields();
for (var x = 0; x < fields.length; x++) {
g_form.setReadOnly(fields[x], true);

}
}

 

 

Please mark useful if my response helped you