current Assignment group members

Kavita1
Giga Contributor

I have requirement 'Current Assignment group members, plus problem management team and Submitter should be able to cancel problem. User other than those should not be able to cancel the ticket.

I have implemented for submitter and Problem Management group. But not able to do for current assignment group. Below is the business rule:

var gr = new GlideRecord('problem');
var isOpenedBy = gr.opened_by;
var usrID = gs.getUserID();
var assignGrp = gr.assignment_group;

var grp = new GlideRecord('sys_user_group');
grp.addQuery('name',assignGrp);
grp.query();
if(grp.next()){
var assignGrpID = grp.sys_id;
}

var assignMember = new isMemberOfGroup().grpMember(usrID,assignGrpID);
 if(assignMember == 'false' || assignMember == false){
current.setAbortAction(true);
gs.addErrorMessage('You dont have permission to cancel the problem');
}

Script Include:

var isMemberOfGroup = Class.create();
isMemberOfGroup.prototype = {
grpMember: function(usrID,grpID){
var gr = new GlideRecord('sys_user_grmember');
gr.addQuery('user',usrID);
gr.addQuery('group',grpID);
gr.query();
if(gr.next()){
return true;
}
else{
return false;
}
},
type: 'isMemberOfGroup'
};

Please help

1 ACCEPTED SOLUTION

Suseela Peddise
Kilo Sage

Hi,

You no need to use Gliderecord and Script include. You can check the logged in user is member of group or not using isMemberOf() . Please see below code to check loggedin user is member of problem grp or assignment group

//check logged in user is member of problem managemnt grp
var pblm_grpmem= gs.getUser().isMemberOf('problem managament');//update group name
//get the problem assignment grp
var asg_name= current.assignment_group.getDisplayValue();
//check logged in user is member of problem assignment grp
var asg_grpmem=gs.getUser().isMemberOf(asg_name);//update group name

if(pblm_grpmem == false && asg_grpmem == false && current.opened_by!=gs.getUserID())
{
//if all conditions are not satiisfied then abort the cation
gs.addErrorMessage('You dont have permission to cancel the problem');
current.setAbortAction(true);
}

 

If I have answered your question please mark my response as correct and/or helpful.

Thanks,

Suseela P.

View solution in original post

6 REPLIES 6

  I agree with @harun that the best solution is UI Action since as mentioned in my previous replay, there is already OOB existing "Cancel" UI action.  So you can just set up a condition who can access this "Cancel" button.

Of course, if State is not read-only, users would be able to just Cancel from list view, the condition on the UI Action would be useless. Cleverer users would be able to do the same using a variety of methods. The best solution is to implement the check in the Script Include meant for that (new ProblemStateUtils().canMarkDuplicateOrCancel()) and call the same method in a/the Business Rule too.