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,