diff --git a/zun/common/context.py b/zun/common/context.py index 99b01a51d..f1d04a3b4 100644 --- a/zun/common/context.py +++ b/zun/common/context.py @@ -88,6 +88,11 @@ class RequestContext(context.RequestContext): 'all_tenants': self.all_tenants}) return value + def to_policy_values(self): + policy = super(RequestContext, self).to_policy_values() + policy['is_admin'] = self.is_admin + return policy + @classmethod def from_dict(cls, values): return cls(**values) diff --git a/zun/common/policy.py b/zun/common/policy.py index 7f3a75200..b827fed93 100644 --- a/zun/common/policy.py +++ b/zun/common/policy.py @@ -86,7 +86,7 @@ def enforce(context, rule=None, target=None, expression. """ enforcer = init() - credentials = context.to_dict() + credentials = context.to_policy_values() if not exc: exc = exception.PolicyNotAuthorized if target is None: @@ -142,5 +142,5 @@ def check_is_admin(context): """ init() target = {} - credentials = context.to_dict() + credentials = context.to_policy_values() return _ENFORCER.enforce('context_is_admin', target, credentials)