# HG changeset patch # User Mads Kiilerich # Date 1546106101 -3600 # 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 -r 1ab83bed8115 -r 8eed16b2a99b kallithea/lib/auth.py --- 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 #====================================================================== diff -r 1ab83bed8115 -r 8eed16b2a99b kallithea/tests/models/test_permissions.py --- 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,