- 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 01:52 AM
This sounds like the weirdest requirement ever, but why not use a simple ui policy? If name starts with or contains ID, show field.
I do hope you don't have many Sidneys working for your company. And Liddy should also start looking for a new job.
Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 01:57 AM - edited 03-28-2024 02:06 AM
Thanks @Mark Manders , I think I not explained well, username samples for different users are:
id1234
ID2343
986439
128654
So id/ID in username not exist in middle of username characters i.e., username only startsWith id or ID.
UI Policy how could I achieve this, please share the desired UI Policy.
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 02:09 AM
The extra information provided in the comments helps. An onLoad client script like this, should do the trick:
function onLoad() {
// Get the current user's ID
var userID = g_user.userID;
// Check if the userID contains 'id' or 'ID'
if (userID.toLowerCase().indexOf('id') !== -1) {
// If it does, make the 'u_consultant' field visible
g_form.setVisible('u_consultant', true);
} else {
// Otherwise, hide the 'u_consultant' field
g_form.setVisible('u_consultant', false);
}
}
Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2024 02:12 AM
@Mark Manders not working when loggedin user username startswith 'ID'