query to see if user is in a group

sigmachiuta
Kilo Guru

i am trying to query in a business rule to see if the opened by user of a change is a part of a group.   i cant seem to use current.opened_by.isMemberOf()

so i am querying the group table but i am not returning any results

var usr = current.opened_by.getDisplayValue();

 

  var gr = new GlideRecord('sys_user_grmember');

  gr.addQuery('group','group name');

  gr.addQuery('user',usr);

  gr.query();

  while (gr.next()){

  gs.log('query ran');

  if (gr.user != null){

  gs.log('query found' + gr.user);

//do processing

  }else{

gs.log('no user found')

}

  }

1 ACCEPTED SOLUTION

var gr2 = new GlideRecord('sys_user_group');  


gr2.addQuery('name', 'Desktop Support');  


gr2.query();  


  while (gr2.next()){  


      var groupsys = gr2.sys_id;  


      gs.log('The GroupSys ' +groupsys);  


  }  


 


var gr = new GlideRecord('sys_user_grmember');  


gr.addQuery('group', groupsys);  


gr.addQuery('user',current.opened_by);    


gr.query();  


if (gr.next()) {


  gs.log('query ran');


  gs.log('This person is ' + gr.user + ' is a member');


}


else


{


  gs.log('the query still ran');


  gs.log('No user');


}


View solution in original post

13 REPLIES 13

Hi,


Replace


if (gr.user != null){


line with



if (gr.user != ''){



Thanks,


Mihir


Also your If statement will never execute if the query criteria isn't met.   So if the record doesn't exist with the queried user and group then the while statement will never execute because the query criteria wasn't matched.


var gr2 = new GlideRecord('sys_user_group');  


gr2.addQuery('name', 'Desktop Support');  


gr2.query();  


  while (gr2.next()){  


      var groupsys = gr2.sys_id;  


      gs.log('The GroupSys ' +groupsys);  


  }  


 


var gr = new GlideRecord('sys_user_grmember');  


gr.addQuery('group', groupsys);  


gr.addQuery('user',current.opened_by);    


gr.query();  


if (gr.next()) {


  gs.log('query ran');


  gs.log('This person is ' + gr.user + ' is a member');


}


else


{


  gs.log('the query still ran');


  gs.log('No user');


}


HI All,



Even Iam using such kind of script in User criteria section of KB. Somehow its not working. Can you please look into this and let me kniow if iam missing something:



accessviagroup();


function accessviagroup(){


  var x = '';


  var loggedin = gs.getUserID();


  var m_member = new GlideRecord('sys_user_grmember');


  m_member.addQuery('group',"f71cdf4d0ff8a640c11e306be1050e37");


  m_member.addQuery('user',loggedin);


  m_member.query();


  if(m_member.next()){


  x = true;


}


  else{


  x = false;


  }


  return x;


}