Mercurial > kallithea
changeset 7689:8eed16b2a99b
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.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sat, 29 Dec 2018 18:55:01 +0100 |
parents | 1ab83bed8115 |
children | 6d0573ba0721 |
files | kallithea/lib/auth.py kallithea/tests/models/test_permissions.py |
diffstat | 2 files changed, 8 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/auth.py Sat Dec 29 18:39:46 2018 +0100 +++ b/kallithea/lib/auth.py Sat Dec 29 18:55:01 2018 +0100 @@ -199,15 +199,12 @@ # 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 @@ 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 @@ 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 #======================================================================
--- a/kallithea/tests/models/test_permissions.py Sat Dec 29 18:39:46 2018 +0100 +++ b/kallithea/tests/models/test_permissions.py Sat Dec 29 18:55:01 2018 +0100 @@ -599,7 +599,7 @@ 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,