How to make field Editable - ACL

Sironi
Kilo Sage

Hi All,

Please help me on below ACL Part

there 5-groups of List 

arr = [ software, hardware, database, network, telecom ]  , if Loggedin user is member of in any of group then make field editable . 

I know gs.getUser().isMemberOf('groupname') --> but it works for single group. but if we have array of groups then how to fix this ? please help me on this.

1 ACCEPTED SOLUTION

There you go:

var member = IsMember();
gs.addInfoMessage(gs.getMessage("member " + IsMember())); 
if (current.assigned_to == gs.getUserID() || member)
    answer = true;
else
    answer = false;

function IsMember() {
    var groups = gs.getProperty('optimal_groups').split(',');
    for (var ind in groups) {
        if (gs.getUser().isMemberOf(groups[ind])) {
            return true;
        }
    }
    return false;

}
Best Regards
Aman Kumar

View solution in original post

11 REPLIES 11

Community Alums
Not applicable

try the the following code in your ACL script

var array =[ software, hardware, database, network, telecom ];
for (var i = 0; i < array.length; i++){
    var grp = array[i];
    
    if(gs.getUser().isMemberOf(grp))
        {
            answer=true;
            break;
        }
        
    }

Hi ,

I tried below method  , but i am getting undefined 

var member = IsMember();
gs.addInfoMessage(gs.getMessage("member " + IsMember()));

if (gs.hasRole('role') || member)
    answer = true;
else
    answer = false;


function IsMember() {
    var result = false;
    var gr = gs.getProperty('optimal_groups').split(',');
    for (var i = 0; i < gr.length; i++) {
        if (gs.getUser().isMemberOf(gr[i])) {
            result = true;
            break;
        }
    }
}

Aman Kumar S
Kilo Patron

Hi @Sironi 

I would suggest not using hardocded names of group and use sys_ids and store them somewhere in the system property as comma separated sys_ids as string.

 

answer = checkMembership();

function checkMembership(){
    var groups = gs.getProperty("group_sys_ids_write").split(',');//name of your system property
    for(var ind in groups){
        if(gs.getUser().isMemberOf(groups[ind])){
                 return true;
        }
    return false;

}

Best Regards
Aman Kumar

Hi Aman,

1. I want to get/store result(true/false) in to one Variable.  because we have lot conditions comparing in IF-statement. like below .

if (gs.hasRole('role')   ||    IsGroupmember   ||   current.assigned_to == gs.getUserID() || ......etc)

 

2. can we use BREAK ? because i want to stop looping if looged in user is member in at-least any one of array groups ?