- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 01:46 AM - edited 03-28-2024 02:05 AM
Dear Team,
I want to restrict the visibility/display of a field 'u_consultant' (String type field) on user records.
when the loggedin user's username startsWith 'id' or 'ID', then show (Display) 'u_consultant'
and when loggedin user's username NOT startswith NOR contains 'id' or 'ID', then HIDE 'u_consultant'
Wrote below scripts but during impersonation to users having or not having 'id' or 'ID', the user records keep displaying 'u_consultant' field i.e., Not working
Script Include;
var UserUtil1 = Class.create();
UserUtil1.prototype = {
chkUsrID: function() {
var userid = this.getParameter('sysparm_user');
var result = this.newItem('check');
var userGr = new GlideRecord('sys_user');
userGr.addEncodedQuery('active=true^user_nameSTARTSWITHID^ORuser_nameSTARTSWITHid^sys_id=' + userid);
userGr.query();
if (userGr.next()) {
result.setAttribute('check', 'yes');
} else {
result.setAttribute('check', 'no');
}
},
type: 'UserUtil1'
};
Client Script (Above Script Include Called);
function onLoad() {
//Type appropriate comment here, and begin script below
var chkUsrID = new GlideAjax('UserUtil1');
chkUsrID.addParam('sysparm_name', 'chkUsrID');
chkUsrID.addParam('sysparm_user', g_user.userID);
chkUsrID.getXML(getStatus);
function getStatus(answer) {
if (answer) {
var result = answer.responseXML.getElementsByTagname("check");
var check = result[0].getAttribute("check");
if (check == 'yes'){
g_form.setVisible('u_consultant', true);
} else {
g_form.setVisible('u_consultant', false);
}
}
}
}
Please help to modify the script so that it will work
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 09:03 AM - edited 03-28-2024 09:10 AM
Hello @rishabh31 ,
Please try the below logic it should works, I have tested it in my PDI.
You can write a Display business rule and onLoad client script to achieve this requirement.
//Display BR
(function executeRule(current, previous /*null when async*/ ) {
// Add your code here
g_scratchpad.res = false;
var curuser = gs.getUserID();
gs.info("User:" + curuser);
var getUser = new GlideRecord('sys_user');
getUser.addQuery('sys_id', curuser);
getUser.addEncodedQuery('user_nameSTARTSWITHid^ORuser_nameSTARTSWITHID');
getUser.query();
if(getUser.next()){
g_scratchpad.res = true;
}
})(current, previous);
//OnLoad CS:
function onLoad() {
//Type appropriate comment here, and begin script below
var res = g_scratchpad.res;
alert("test:"+res);
if(res == false){
g_form.setVisible('u_consultant',false);
}
else {
g_form.setVisible('u_consultant',true);
}
}
Please Mark My Answer as Helpful and Accept as Solution, if you find this article helpful or resolves your issue.
Best Regards,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 02:11 AM
acl creation not allowed to us, pls help with script include and client script
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 02:17 AM
Be aware that users will still have access to read the field from the list view as the client script will work only in the from view.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 02:45 AM
@Abdulrahman1 I understand that part but customer wants for restrict on form view even after informed them about its limitations help with the scripts, shall be grateful
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 04:26 AM
I tried the below Onload client script and it's working.
function onLoad() {
//Type appropriate comment here, and begin script below
if(g_user.userName.startsWith("id") || g_user.userName.startsWith("ID") ){
g_form.setVisible('u_consultant',true);
}else{
g_form.setVisible('u_consultant',false);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 04:59 AM
If the given solutions don't work, you will have to do it via ACL (which is the best solution to begin with). "ACL creation not allowed to us" is no reason for not using it. Get someone that is allowed to, to create it for you.
Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark