# How to fetch roles with permissions dynamically as part of access token, if user has multiple roles and permissions

**URL:** <https://community.auth0.com/t/how-to-fetch-roles-with-permissions-dynamically-as-part-of-access-token-if-user-has-multiple-roles-and-permissions/80459>\
**Category:** Get Help\
**Tags:** jwt, rules, permissions, management-api\
**Created:** [March 24, 2022, 11:47am UTC](https://community.auth0.com/t/how-to-fetch-roles-with-permissions-dynamically-as-part-of-access-token-if-user-has-multiple-roles-and-permissions/80459 "2022-03-24T11:47:13Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![selvi](https://sea1.discourse-cdn.com/auth0/user_avatar/community.auth0.com/selvi/32/33945_2.png) [@selvi](https://community.auth0.com/u/selvi)\
**Post date:** [March 24, 2022, 11:47am UTC](https://community.auth0.com/t/how-to-fetch-roles-with-permissions-dynamically-as-part-of-access-token-if-user-has-multiple-roles-and-permissions/80459/1 "2022-03-24T11:47:13Z")

</div>

Added rule Which I have it, getting roles and permissions separately as part of access token, attached the decode token below. But I am expecting json response as below roles and permissions need to be associated like below as part of access token

> 1. role-a  
> create:orders  
> update:orders

> 1. role-b  
> create:products  
> update:products  
> delete:products  
> list:products

// rule

> async function(user, context, callback) {  
> const namespace = ‘[https://user](https://user)’;  
> const map = require(‘array-map’);  
> const ManagementClient = require(‘auth0@2.17.0’).ManagementClient;  
> const management = new ManagementClient({  
> token: auth0.accessToken,  
> domain: auth0.domain  
> });
> 
> const params = { id: user.user\_id, page: 0, per\_page: 50, include\_totals: true };  
> const permissions = await management.getUserPermissions(params);  
> const assignedPermissions = map(permissions.permissions, function (permission) {  
> return permission.permission\_name;  
> });
> 
> const assignedRoles = context.authorization ? context.authorization.roles : null;
> 
> if (context.idToken) {  
> const idTokenClaims = context.idToken;  
> idTokenClaims[`${namespace}/roles`] = assignedRoles ? assignedRoles : [“Guest”];  
> idTokenClaims[`${namespace}/permissions`] = assignedPermissions;  
> context.idToken = idTokenClaims;  
> }
> 
> if (context.accessToken) {  
> const accessTokenClaims = context.accessToken;  
> accessTokenClaims[`${namespace}/roles`] = assignedRoles ? assignedRoles : [“Guest”];  
> accessTokenClaims[`${namespace}/permissions`] = assignedPermissions;  
> context.accessToken = accessTokenClaims;  
> }

console.log(user.user\_metadata);  
if (context.idToken && user.user\_metadata) {  
context.idToken[namespace + ‘/user\_metadata’] = user.user\_metadata;  
context.accessToken[namespace + ‘/user\_metadata’] = user.user\_metadata;  
}  
console.log(user.app\_metadata);  
if (context.idToken && user.app\_metadata) {  
context.idToken[namespace + ‘/app\_metadata’] = user.app\_metadata;  
context.accessToken[namespace + ‘/app\_metadata’] = user.app\_metadata;  
}

callback(null, user, context);  
}

// jwt decoded token

```auto

{
  "https://user/roles": [
    "role-a",
    "role-b"
  ],
  "https://user/permissions": [
    "create:role_members",
    "create:users"
  ],

```

---

<div class="post-metadata">

**Author:** ![ty.frith](https://sea1.discourse-cdn.com/auth0/user_avatar/community.auth0.com/ty.frith/32/58484_2.png) [@ty.frith](https://community.auth0.com/u/ty.frith)\
**Post date:** [April 15, 2022, 11:44pm UTC](https://community.auth0.com/t/how-to-fetch-roles-with-permissions-dynamically-as-part-of-access-token-if-user-has-multiple-roles-and-permissions/80459/3 "2022-04-15T23:44:49Z")

</div>

Hey there @selvi!

> [@selvi](#):
>
> But I am expecting json response as below roles and permissions need to be associated like below as part of access token

I’m not sure there is a straightforward way to associate roles with specific permissions - Out of curiosity, what’s the use case where this is needed - Specifically, if you have the correct roles/permissions why does it matter that they are associated?

I suppose you could use the management api to [get permissions granted by a specific role](https://auth0.com/docs/api/management/v2#!/Roles/get_role_permission) and go about it that way 🙂

Let us know!

---

<div class="post-metadata">

**Author:** ![ty.frith](https://sea1.discourse-cdn.com/auth0/user_avatar/community.auth0.com/ty.frith/32/58484_2.png) [@ty.frith](https://community.auth0.com/u/ty.frith)\
**Post date:** [April 30, 2022, 11:45pm UTC](https://community.auth0.com/t/how-to-fetch-roles-with-permissions-dynamically-as-part-of-access-token-if-user-has-multiple-roles-and-permissions/80459/4 "2022-04-30T23:45:29Z")

</div>

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.
