policies: rewrite cache_key to prevent wrong cache

# Conflicts:
#	passbook/core/signals.py
#	passbook/policies/engine.py
#	passbook/policies/process.py
This commit is contained in:
Jens Langhammer
2020-05-24 02:06:54 +02:00
parent f22c89c998
commit 55fc5a6068
7 changed files with 45 additions and 37 deletions

View File

@ -14,11 +14,13 @@ from passbook.policies.types import PolicyRequest, PolicyResult
LOGGER = get_logger()
def cache_key(binding: PolicyBinding, user: Optional[User] = None) -> str:
def cache_key(binding: PolicyBinding, request: PolicyRequest) -> str:
"""Generate Cache key for policy"""
prefix = f"policy_{binding.policy_binding_uuid.hex}_{binding.policy.pk.hex}"
if user:
prefix += f"#{user.pk}"
if request.http_request:
prefix += f"_{request.http_request.session.session_key}"
if request.user:
prefix += f"#{request.user.pk}"
return prefix
@ -65,7 +67,7 @@ class PolicyProcess(Process):
passing=policy_result.passing,
user=self.request.user,
)
key = cache_key(self.binding, self.request.user)
key = cache_key(self.binding, self.request)
cache.set(key, policy_result)
LOGGER.debug("P_ENG(proc): Cached policy evaluation", key=key)
return policy_result