How to hide the Tab in record page in workspace.

u499207
Giga Contributor

Hi All,

I am working on a Configurable Workspace page in UI Builder where I have multiple tabs, including a Playbook tab. My requirement is to show the Playbook tab only for users who have a specific role.

Role:
xyz

Requirement:

  • If the logged-in user has the above role, the Playbook tab should be visible.
  • If the user does not have the role, the Playbook tab should be hidden.

What I Tried:

  1. I added a visibility script in the Playbook tab settings in UI Builder.
function evaluateProperty({api}) {
    if (api.user.hasRole('xyz')) {
        return true;
    }
    return false;
}
  1. I also tried checking user roles using:
function evaluateProperty({api, helpers}) {
  let user_roles = api.context.session.user.roles;
  let visibility_condition = user_roles.includes('xyz');
  return visibility_condition;
}

Issue:
Even after applying the script, the Playbook tab is still visible for users who do not have the role.

Questions:

  1. Is the tab visibility controlled differently in Configurable Workspace?
  2. Is there a recommended way to restrict tab visibility by role?

Any suggestions or best practices would be helpful.

Thanks in advance.

Anitha P

1 REPLY 1

Dinesh Chilaka
Kilo Sage

Hi @u499207 ,

You did everything correct but in ServiceNow UI Builder if you are working on Visibility,

returning true - refers to hide the component.

returning false - refers to show the component.

So change the small thing in your script,

function evaluateProperty({api, helpers}) {
  let user_roles = api.context.session.user.roles;
  let visibility_condition = user_roles.includes('xyz');
  return  !visibility_condition;
}

 While returning visibility_condition just return !visibility_condition.
If my response helped, mark it as helpful and accept the solution.