@@ -475,18 +475,12 @@ def is_external(self, request):
475475 "X-Forwarded-Host"
476476 ) is not None and not request .headers .get ("Origin" )
477477
478- def is_admin (self , groups ):
478+ def is_admin (self , request ):
479+ groups = self .get_groups (request )
479480 admin_group = os .environ .get ("ADMIN_GROUP" , "admin" )
480481 return admin_group in groups
481482
482- def is_admin_or_project_user (self , request , obj ):
483- if self .is_anonymous (request ):
484- return False
485-
486- groups = self .get_groups (request )
487- if self .is_admin (groups ):
488- return True
489-
483+ def is_project_user (self , request , obj ):
490484 if hasattr (obj , "owner" ):
491485 owner = obj .owner
492486 project = obj .name
@@ -496,9 +490,19 @@ def is_admin_or_project_user(self, request, obj):
496490 else :
497491 raise Unauthorized (f"Unable to authorize { obj } " )
498492
493+ groups = self .get_groups (request )
499494 username = request .headers .get ("X-Consumer-Username" )
500495 return project in groups or owner == username
501496
497+ def is_admin_or_project_user (self , request , obj ):
498+ if self .is_anonymous (request ):
499+ return False
500+
501+ if self .is_admin (request ):
502+ return True
503+
504+ return self .is_project_user (request , obj )
505+
502506 def get_projects (self ):
503507 # project is LazyReferenceFields (multiple queries)
504508 module = import_module ("mpcontribs.api.projects.document" )
@@ -530,10 +534,10 @@ def get_projects_filter(self, username, groups, filter_names=None):
530534 return qfilter
531535
532536 def has_read_permission (self , request , qs ):
533- groups = self .get_groups (request )
534- if self .is_admin (groups ):
537+ if self .is_admin (request ):
535538 return qs # admins can read all entries
536539
540+ groups = self .get_groups (request )
537541 is_anonymous = self .is_anonymous (request )
538542 is_external = self .is_external (request )
539543 username = request .headers .get ("X-Consumer-Username" )
0 commit comments