Read ACLs should not have GlideRecord/GlideAggregate in script

krishna111
Tera Contributor

Hello All,

Hope all are doing good !!

ACLs (Security rules) should not have GlideRecord/GlideAggregate in script

We have a custom ACL written as shown below using GlideRecord. How can i replace this code so that it does not use  GlideRecord query. or is it even possible in this case?.

var loggedInUser = gs.getUserID();
var supplier = current.getDisplayValue('u_affected_supplier');
var grm = new GlideRecord('sys_user_grmember');
grm.addQuery('user', loggedInUser);
grm.addQuery('group.parent','ba466ab6db802f40978724b3ca9619fa');
grm.query();
while (grm.next()){
var groupSource = grm.group.source;
if (groupSource == supplier || current.u_affected_supplier.nil()){
answer = true;
}
else{
answer = false;
}

}

 

 

Regards

Kumar.

1 ACCEPTED SOLUTION

update as this

answer = isChangeUser();

//give read access to this Vul Item if the user is associated with a Change associated with it
function isChangeUser() {
	var flag = false;
	var usr = gs.getUserID();
	var m2m = new GlideRecord('sn_vul_m2m_item_task');
	m2m.addQuery('vulnerable_item', current.sys_id);
	m2m.query();
	while (m2m.next()) {
		var chg = m2m.task.getRefRecord();
		if (chg.requested_by == usr || chg.u_change_manager == usr || chg.assigned_to == usr || gs.getUser().isMemberOf(chg.u_coordinator_group) || gs.getUser().isMemberOf(chg.assignment_group))
		{
			flag = true;
			break;
		}
	}
	return flag;
}

regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

7 REPLIES 7

Hello Ankur,

 

Thanks for your response!! Is there any possible way the above code can be written without using GlideRecord.?

 

 

@krishna111 

nope

Thank you for marking my response as helpful.

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

krishna111
Tera Contributor

Can the below code bereplaced or is it possible in any other way?

 

answer = isChangeUser();

//give read access to this Vul Item if the user is associated with a Change associated with it
function isChangeUser() {
var usr = gs.getUserID();
var m2m = new GlideRecord('sn_vul_m2m_item_task');
m2m.addQuery('vulnerable_item', current.sys_id);
m2m.query();
while (m2m.next()) {
var chg = m2m.task.getRefRecord();
if (chg.requested_by == usr || chg.u_change_manager == usr || chg.assigned_to == usr || gs.getUser().isMemberOf(chg.u_coordinator_group) || gs.getUser().isMemberOf(chg.assignment_group))
{
return true;
}
}
}