diff --git a/rbac/userperm.py b/rbac/userperm.py index 8a5d9fa..3d29cfa 100644 --- a/rbac/userperm.py +++ b/rbac/userperm.py @@ -46,16 +46,18 @@ where a.id = c.userid return path in paths async def is_user_has_path_perm(self, userid, path): - roles = self.ur_caches.get(userid) - if userid is None: - roles = ['anonymous'] - + roles = None if self.ur_caches is None: async with get_sor_context(env, 'rbac') as sor: await self.load_roleperms(sor) + if userid: + roles = self.ur_caches.get(userid) + if not roles: + await self.get_userroles(sor, userid) + roles = self.ur_caches.get(userid) - if not roles: - await self.get_userroles(sor, userid) + if userid is None: + roles = ['anonymous'] return self.check_roles_path(roles, path)