useracl.py 903 B

1234567891011121314151617181920212223242526272829
  1. import copy
  2. from . import buildacl, cache
  3. from .providers import providers
  4. def get_user_acl(user, cache_versions):
  5. user_acl = cache.get(user, cache_versions)
  6. if user_acl is None:
  7. user_acl = buildacl.build_acl(user.get_roles())
  8. cache.set(user, cache_versions, user_acl)
  9. user_acl["user_id"] = user.id
  10. user_acl["is_authenticated"] = bool(user.is_authenticated)
  11. user_acl["is_anonymous"] = bool(user.is_anonymous)
  12. user_acl["is_staff"] = user.is_staff
  13. user_acl["is_superuser"] = user.is_superuser
  14. user_acl["cache_versions"] = cache_versions.copy()
  15. return user_acl
  16. def serialize_user_acl(user_acl):
  17. """serialize authenticated user's ACL"""
  18. serialized_acl = copy.deepcopy(user_acl)
  19. serialized_acl.pop("cache_versions")
  20. for serializer in providers.get_user_acl_serializers():
  21. serializer(serialized_acl)
  22. return serialized_acl