##// END OF EJS Templates
api-utils: added helper to validate repository-group access permissions.
marcink -
r1148:6c251832 default
parent child Browse files
Show More
@@ -26,7 +26,8 b' import collections'
26 26 import logging
27 27
28 28 from rhodecode.api.exc import JSONRPCError
29 from rhodecode.lib.auth import HasPermissionAnyApi, HasRepoPermissionAnyApi
29 from rhodecode.lib.auth import HasPermissionAnyApi, HasRepoPermissionAnyApi, \
30 HasRepoGroupPermissionAnyApi
30 31 from rhodecode.lib.utils import safe_unicode
31 32 from rhodecode.controllers.utils import get_commit_from_ref_name
32 33 from rhodecode.lib.vcs.exceptions import RepositoryError
@@ -170,6 +171,36 b' def has_repo_permissions(apiuser, repoid'
170 171 return True
171 172
172 173
174 def validate_repo_group_permissions(apiuser, repogroupid, repo_group, perms):
175 """
176 Raise JsonRPCError if apiuser is not authorized or return True
177
178 :param apiuser:
179 :param repogroupid: just the id of repository group
180 :param repo_group: instance of repo_group
181 :param perms:
182 """
183 if not HasRepoGroupPermissionAnyApi(*perms)(
184 user=apiuser, group_name=repo_group.group_name):
185 raise JSONRPCError(
186 'repository group `%s` does not exist' % repogroupid)
187
188 return True
189
190
191 def has_set_owner_permissions(apiuser, owner):
192 if isinstance(owner, Optional):
193 owner = get_user_or_error(apiuser.user_id)
194 else:
195 if has_superadmin_permission(apiuser):
196 owner = get_user_or_error(owner)
197 else:
198 # forbid setting owner for non-admins
199 raise JSONRPCError(
200 'Only RhodeCode super-admin can specify `owner` param')
201 return owner
202
203
173 204 def get_user_or_error(userid):
174 205 """
175 206 Get user by id or name or return JsonRPCError if not found
General Comments 0
You need to be logged in to leave comments. Login now