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

Yes, that's why I have enclosed the script in a function, as soon as it finds that the user is part of any one group, it will return the value and won't do further checks.

Best Regards
Aman Kumar

Hi,

I did like this , but it is always returning "FALSE" values even for Group members.

 

var member = IsMember();
gs.addInfoMessage(gs.getMessage("member " + IsMember())); // getting "FALSE " all the time

if (gs.hasRole('role') || 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;
    }
}

How are you storing the sys_id in the system property?

and gs.hadRole('role')//hope you are passing the correct role name here.

Also in your info message what are you getting?

Best Regards
Aman Kumar

getting message "false";

help me on this , is return false; should be inside of For-loop OR Outside of For-loop?????

if we use "return false; " inside of FOR-Loop with below code getting "FALSE" even for group members

var member = IsMember();
gs.addInfoMessage(gs.getMessage("member " + IsMember() + "--" + member));
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;
}
}

 

if we use "return false; " Outside of FOR-Loop with below code getting "TRUE" for group members

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;

}

2nd code is correct, I think i missed one '}'

return false should be outside for loop.

You can go on with this.

Best Regards
Aman Kumar