# Creating and using 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://guardian.hedera.com/guardian-dev/guardian/standard-registry/policies/library-of-policy-examples/creating-and-using-roles.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
