##// END OF EJS Templates
auth: refactor to make it explicit in the function profile when they only takes one permission
Mads Kiilerich -
r6576:a32ca320 default
parent child Browse files
Show More
@@ -829,7 +829,7 b' class NotAnonymous(object):'
829
829
830
830
831 class _PermsDecorator(object):
831 class _PermsDecorator(object):
832 """Base class for controller decorators"""
832 """Base class for controller decorators with multiple permissions"""
833
833
834 def __init__(self, *required_perms):
834 def __init__(self, *required_perms):
835 self.required_perms = required_perms # usually very short - a list is thus fine
835 self.required_perms = required_perms # usually very short - a list is thus fine
@@ -868,29 +868,35 b' class HasPermissionAnyDecorator(_PermsDe'
868 return any(p in global_permissions for p in self.required_perms)
868 return any(p in global_permissions for p in self.required_perms)
869
869
870
870
871 class HasRepoPermissionLevelDecorator(_PermsDecorator):
871 class _PermDecorator(_PermsDecorator):
872 """Base class for controller decorators with a single permission"""
873
874 def __init__(self, required_perm):
875 _PermsDecorator.__init__(self, [required_perm])
876 self.required_perm = required_perm
877
878
879 class HasRepoPermissionLevelDecorator(_PermDecorator):
872 """
880 """
873 Checks the user has at least the specified permission level for the requested repository.
881 Checks the user has at least the specified permission level for the requested repository.
874 """
882 """
875
883
876 def check_permissions(self, user):
884 def check_permissions(self, user):
877 repo_name = get_repo_slug(request)
885 repo_name = get_repo_slug(request)
878 (level,) = self.required_perms
886 return user.has_repository_permission_level(repo_name, self.required_perm)
879 return user.has_repository_permission_level(repo_name, level)
880
887
881
888
882 class HasRepoGroupPermissionLevelDecorator(_PermsDecorator):
889 class HasRepoGroupPermissionLevelDecorator(_PermDecorator):
883 """
890 """
884 Checks the user has any of given permissions for the requested repository group.
891 Checks the user has any of given permissions for the requested repository group.
885 """
892 """
886
893
887 def check_permissions(self, user):
894 def check_permissions(self, user):
888 repo_group_name = get_repo_group_slug(request)
895 repo_group_name = get_repo_group_slug(request)
889 (level,) = self.required_perms
896 return user.has_repository_group_permission_level(repo_group_name, self.required_perm)
890 return user.has_repository_group_permission_level(repo_group_name, level)
891
897
892
898
893 class HasUserGroupPermissionLevelDecorator(_PermsDecorator):
899 class HasUserGroupPermissionLevelDecorator(_PermDecorator):
894 """
900 """
895 Checks for access permission for any of given predicates for specific
901 Checks for access permission for any of given predicates for specific
896 user group. In order to fulfill the request any of predicates must be meet
902 user group. In order to fulfill the request any of predicates must be meet
@@ -898,8 +904,7 b' class HasUserGroupPermissionLevelDecorat'
898
904
899 def check_permissions(self, user):
905 def check_permissions(self, user):
900 user_group_name = get_user_group_slug(request)
906 user_group_name = get_user_group_slug(request)
901 (level,) = self.required_perms
907 return user.has_user_group_permission_level(user_group_name, self.required_perm)
902 return user.has_user_group_permission_level(user_group_name, level)
903
908
904
909
905 #==============================================================================
910 #==============================================================================
@@ -907,7 +912,7 b' class HasUserGroupPermissionLevelDecorat'
907 #==============================================================================
912 #==============================================================================
908
913
909 class _PermsFunction(object):
914 class _PermsFunction(object):
910 """Base function for other check functions"""
915 """Base function for other check functions with multiple permissions"""
911
916
912 def __init__(self, *required_perms):
917 def __init__(self, *required_perms):
913 self.required_perms = required_perms # usually very short - a list is thus fine
918 self.required_perms = required_perms # usually very short - a list is thus fine
@@ -934,25 +939,30 b' class HasPermissionAny(_PermsFunction):'
934 return ok
939 return ok
935
940
936
941
937 class HasRepoPermissionLevel(_PermsFunction):
942 class _PermFunction(_PermsFunction):
943 """Base function for other check functions with a single permission"""
944
945 def __init__(self, required_perm):
946 _PermsFunction.__init__(self, [required_perm])
947 self.required_perm = required_perm
948
949
950 class HasRepoPermissionLevel(_PermFunction):
938
951
939 def __call__(self, repo_name, purpose=None):
952 def __call__(self, repo_name, purpose=None):
940 (level,) = self.required_perms
953 return request.user.has_repository_permission_level(repo_name, self.required_perm, purpose)
941 return request.user.has_repository_permission_level(repo_name, level, purpose)
942
954
943
955
944 class HasRepoGroupPermissionLevel(_PermsFunction):
956 class HasRepoGroupPermissionLevel(_PermFunction):
945
957
946 def __call__(self, group_name, purpose=None):
958 def __call__(self, group_name, purpose=None):
947 (level,) = self.required_perms
959 return request.user.has_repository_group_permission_level(group_name, self.required_perm, purpose)
948 return request.user.has_repository_group_permission_level(group_name, level, purpose)
949
960
950
961
951 class HasUserGroupPermissionLevel(_PermsFunction):
962 class HasUserGroupPermissionLevel(_PermFunction):
952
963
953 def __call__(self, user_group_name, purpose=None):
964 def __call__(self, user_group_name, purpose=None):
954 (level,) = self.required_perms
965 return request.user.has_user_group_permission_level(user_group_name, self.required_perm, purpose)
955 return request.user.has_user_group_permission_level(user_group_name, level, purpose)
956
966
957
967
958 #==============================================================================
968 #==============================================================================
General Comments 0
You need to be logged in to leave comments. Login now