diff --git a/vj4/handler/base.py b/vj4/handler/base.py index 128a039cb..599fa0681 100644 --- a/vj4/handler/base.py +++ b/vj4/handler/base.py @@ -89,10 +89,10 @@ def check_priv(self, priv): raise error.PrivilegeError(priv) def dudoc_has_perm(self, udoc, dudoc, perm, ddoc=None): - if not udoc or not dudoc: - return False - # TODO(iceboy): Fix caller when dudoc=None is passed in. - role = dudoc.get('role', builtin.ROLE_DEFAULT) + if not udoc: + role = builtin.ROLE_GUEST + else: + role = dudoc.get('role', builtin.ROLE_DEFAULT) mask = domain.get_all_roles(ddoc if ddoc else self.domain).get(role, builtin.PERM_NONE) return ((perm & mask) == perm or self.udoc_has_priv(udoc, builtin.PRIV_MANAGE_ALL_DOMAIN))