ACL Query for group type check

Derek10
Tera Expert

Issue with script

Happy Sunday all!

 

Was wondering if I could get some assistance with my below script

var user = gs.getUser(); // pulls user groups
var grp = gs.getUser().getMyGroups().toString(); //sets sys ids to string
var array = grp.split(","); // splits at comma

//For each group in array, check group tier
for (var i=0; i<array.length; i++) {
var grMember1 = new GlideRecord('sys_user_group');
// grMember1.addQuery('user',user);
grMember1.addQuery('group', array(i));
grMember1.addQuery('u_tier','!=', 1);
grMember1.query();
if (grMember1.next()) {
//if tier is not 1
answer= true;
gs.print ('true');

}
else{
//tier is 1
answer= false;
}

}

this is for a ACL and i'm testing the script via background

Evaluator: org.mozilla.javascript.EcmaError: array is not a function.
   Caused by error in script at line 9

My goal is to check the user's groups see if any of them are NOT tier 1,
if they aren't return true, otherwise return false using answer obviously since it's an acl

Thanks for any tips!




 

 

8 REPLIES 8

Alikutty A
Tera Sage

Hello,

Please change the following line var grp = gs.getUser().getMyGroups()

To

var grp = gs.getUser().getMyGroups().toArray();

Mike Patel
Tera Sage

I think you need below

var grp = gs.getUser().getMyGroups().toString(); //sets sys ids to string

var grMember1 = new GlideRecord('sys_user_group');
grMember1.addQuery('sys_id', 'IN', grp);
grMember1.addQuery('u_tier','!=', 1);
grMember1.query();
if(grMember1.hasNext()) {
	answer= true;
}else{
	answer= false;
}

Did this worked?

Please close this thread by marking answer correct.

Derek10
Tera Expert

thank you, that is helpful.

 

It seems my query is exploding, I am simply trying to look at the group table and see what the teirs of each group is.

 

Any clue what I am missing? it doesn't seem to want to iterate,  I believe my add queries are correct. 

 

I can print out the arrays before the query with no issue via gs.print(grp[0].....

 

var grp = gs.getUser().getMyGroups(); //sets sys ids to string
var array =[];

//For each group in array, check group tier
for (var i=0; i<array.length; i++) {
var grMember1 = new GlideRecord('sys_user_group');
grMember1.addQuery('sys_id', grp (i));
grMember1.addQuery('u_tier','!=', 1);
grMember1.query();
gs.print (grMember1.next);

if (grMember1.next()) {
//if tier is not 1
answer= true;
gs.print ('true');

}
else{
//tier is 1
answer= false;
gs.print ('false');
}

}