summaryrefslogtreecommitdiff
path: root/keystone/models/token_model.py
diff options
context:
space:
mode:
Diffstat (limited to 'keystone/models/token_model.py')
-rw-r--r--keystone/models/token_model.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/keystone/models/token_model.py b/keystone/models/token_model.py
index 79791e5dd..7f190286a 100644
--- a/keystone/models/token_model.py
+++ b/keystone/models/token_model.py
@@ -409,14 +409,16 @@ class TokenModel(object):
def _get_application_credential_roles(self):
roles = []
app_cred_roles = self.application_credential['roles']
+ assignment_list = PROVIDERS.assignment_api.list_role_assignments(
+ user_id=self.user_id,
+ project_id=self.project_id,
+ domain_id=self.domain_id,
+ effective=True)
+ user_roles = list(set([x['role_id'] for x in assignment_list]))
+
for role in app_cred_roles:
- try:
- r = PROVIDERS.assignment_api.get_grant(
- role['id'], user_id=self.user_id,
- domain_id=self.domain_id, project_id=self.project_id)
- roles.append({'id': r['id'], 'name': r['name']})
- except exception.RoleAssignmentNotFound:
- pass
+ if role['id'] in user_roles:
+ roles.append({'id': role['id'], 'name': role['name']})
return roles