> For the complete documentation index, see [llms.txt](https://dev.guardian.hedera.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.guardian.hedera.com/guardian/workspace/policies/library-of-policy-examples/creating-and-using-roles.md).

# Creating and using Policy Roles

For a demo example of following steps, here is the policy timestamp: **1675164531.823309003**

## **User roles usage in Policies**

### **An example of creating and using Roles in Policy**

1. Switch to the Roles tab

![Roles Tab](/files/juaFrmczdvh33FcfhELJ)

2. Create 2 new roles called ‘**Example role 1***’ and* ‘***Example role 2***’

![Add Role button](/files/FBuxIjjb42Yw1DHmXhaU)

![Creating two roles](/files/78hdV1tsbOm3uwmJWm4Z)

3. In the root container create 4 more ’**interfaceContainerBlock***’* container called ‘**no\_role***’*, ‘**owner***’*, ‘**role\_1***’ and ‘***role\_2***’*

![Creating 4 interfaceContainerBlock](/files/pkQW6L2MmhhSpSfAq28g)

{% hint style="info" %}
**Note:** By default all containers would have ‘*Any Role’* set and thus they would be visible to all users (with all roles)
{% endhint %}

4. Change the ‘Permissions’ properties in each container in the following way:

* no\_role: No Role
* owner: Owner
* role\_1: Example role 1
* role\_2: Example role 2

![No Role](/files/yNqK9SHtigvjsvcACo9Z) ![Owner](/files/BhUYX4WpilDBuRVQ3tss)

![Example role 1](/files/MPMaAfYxoYBdQWNkqHC1) ![Example role 2](/files/Rkw2H3TqeErp8whR4Mvj)

This would result in the following visibility of containers:

* The first container (called ’no role’) would be visible only to new users which have no role assigned to them
* The ‘owner’ container would be visible only to the Standard Registry which created (or imported) this policy
* The ‘role 1’ container would be visible only to users with ‘*Example role 1’*
* The ‘role 2’ container would be visible only to users with ‘*Example role 2’*

5. Add a ‘**policyRolesBlock***’* to the ‘*no\_role’* container and name it ‘*choose\_role’*

![Adding policyRolesBlock](/files/deOqZEb9k53Y3Ca1OlbJ)

Since this block is located inside the container ‘*no\_role*’ which has ‘*No role*’ permission setting it would only be visible to new users without an assigned role.

6. The ‘**Available Roles***’* property allows to configure which roles would be available to users to chose from at this stage of the Policy workflow

Select ‘**Example role 1***’ and* ‘**Example role 2***’*

![Available Roles property](/files/l6QFIy7xyvtITUGE48xb)

7. Add ‘**informationBlock**’ to other containers just to display results

![InformationBlock to other containers](/files/Ru5FoiZZZ49ioFpRnU1t)

### **Results**:

1. New users would end up on the policy choice form upon entering the policy

![Selecting Role](/files/QjOMiuVLq8W6o2IodACt)

2. After the selection of the role users would see only 1 container corresponding to their roles

![Showing only 1 container](/files/fN7tYaZrcDjWTIX8VKP2)

3. The owner of the Policy (the Standard Registry user) upon executing the policy would skip the role selection form and would immediately end-up in the corresponding container

![For Standard Registry](/files/9b6AqZDuRab8cDjeYhIi)
