ACL Query for group type check

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-16-2018 08:32 AM
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!
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-16-2018 08:40 AM
Hello,
Please change the following line var grp = gs.getUser().getMyGroups()
To
var grp = gs.getUser().getMyGroups().toArray();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-16-2018 09:19 AM
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;
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-18-2018 06:02 PM
Did this worked?
Please close this thread by marking answer correct.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-16-2018 09:21 AM
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');
}
}