# HG changeset patch # User Mads Kiilerich # Date 2018-12-29 18:55:01 # Node ID 8eed16b2a99bebcfd5d81a0cc778d0b636d19773 # Parent 1ab83bed811517e2600811456c8fca44c09db0e9 auth: minor refactoring of computation of admin access for repo owners Make the flow slightly simpler ... and now when permissions are merged, we only have to set repo owner access once. BUT: because multiple_counter, we actually don't merge permissions in all cases. This will thus introduce a regression that will be fixed in next changeset. diff --git a/kallithea/lib/auth.py b/kallithea/lib/auth.py --- a/kallithea/lib/auth.py +++ b/kallithea/lib/auth.py @@ -199,15 +199,12 @@ def _cached_perms_data(user_id, user_is_ # defaults for repositories, taken from default user for perm in default_repo_perms: r_k = perm.UserRepoToPerm.repository.repo_name - if perm.Repository.private and not (perm.Repository.owner_id == user_id): - # disable defaults for private repos, + if perm.Repository.owner_id == user_id: + p = 'repository.admin' + elif perm.Repository.private: p = 'repository.none' - elif perm.Repository.owner_id == user_id: - # set admin if owner - p = 'repository.admin' else: p = perm.Permission.permission_name - permissions[RK][r_k] = p # defaults for repository groups taken from default user permission @@ -294,13 +291,8 @@ def _cached_perms_data(user_id, user_is_ multiple_counter[r_k] += 1 p = perm.Permission.permission_name cur_perm = permissions[RK][r_k] - - if perm.Repository.owner_id == user_id: - # set admin if owner - p = 'repository.admin' - else: - if multiple_counter[r_k] > 1: - p = _choose_perm(p, cur_perm) + if multiple_counter[r_k] > 1: + p = _choose_perm(p, cur_perm) permissions[RK][r_k] = p # user permissions for repositories @@ -308,12 +300,8 @@ def _cached_perms_data(user_id, user_is_ for perm in user_repo_perms: r_k = perm.UserRepoToPerm.repository.repo_name cur_perm = permissions[RK][r_k] - # set admin if owner - if perm.Repository.owner_id == user_id: - p = 'repository.admin' - else: - p = perm.Permission.permission_name - p = _choose_perm(p, cur_perm) + p = perm.Permission.permission_name + p = _choose_perm(p, cur_perm) permissions[RK][r_k] = p #====================================================================== diff --git a/kallithea/tests/models/test_permissions.py b/kallithea/tests/models/test_permissions.py --- a/kallithea/tests/models/test_permissions.py +++ b/kallithea/tests/models/test_permissions.py @@ -599,7 +599,7 @@ class TestPermissions(TestController): Session().commit() u1_auth = AuthUser(user_id=self.u1.user_id) - assert u1_auth.permissions['repositories']['myownrepo'] == 'repository.admin' + assert u1_auth.permissions['repositories']['myownrepo'] == 'repository.none' # temporarily, because multiple_counter def test_owner_permissions_doesnot_get_overwritten_by_others(self): # create repo as USER,