@@ -265,18 +265,13 @@ class PushHookViewSet(BaseHookViewSet):
265265
266266 def create (self , request , * args , ** kwargs ):
267267 app = get_object_or_404 (models .App , id = request .data ['receive_repo' ])
268- self .user = get_object_or_404 (User , username = request .data ['receive_user' ])
268+ request .user = get_object_or_404 (User , username = request .data ['receive_user' ])
269269 # check the user is authorized for this app
270- if self .user == app .owner or \
271- self .user in get_users_with_perms (app ) or \
272- self .user .is_superuser :
273- request .data ['app' ] = app
274- request .data ['owner' ] = self .user
275- return super (PushHookViewSet , self ).create (request , * args , ** kwargs )
276- raise PermissionDenied ()
277-
278- def perform_create (self , serializer , ** kwargs ):
279- serializer .save (owner = self .user )
270+ if not permissions .is_app_user (request , app ):
271+ raise PermissionDenied ()
272+ request .data ['app' ] = app
273+ request .data ['owner' ] = request .user
274+ return super (PushHookViewSet , self ).create (request , * args , ** kwargs )
280275
281276
282277class BuildHookViewSet (BaseHookViewSet ):
@@ -286,24 +281,17 @@ class BuildHookViewSet(BaseHookViewSet):
286281
287282 def create (self , request , * args , ** kwargs ):
288283 app = get_object_or_404 (models .App , id = request .data ['receive_repo' ])
289- self .user = get_object_or_404 (User , username = request .data ['receive_user' ])
284+ self .user = request . user = get_object_or_404 (User , username = request .data ['receive_user' ])
290285 # check the user is authorized for this app
291- if self .user == app .owner or \
292- self .user in get_users_with_perms (app ) or \
293- self .user .is_superuser :
294- request ._data = request .data .copy ()
295- request .data ['app' ] = app
296- request .data ['owner' ] = self .user
297- super (BuildHookViewSet , self ).create (request , * args , ** kwargs )
298- # return the application databag
299- response = {'release' : {'version' : app .release_set .latest ().version },
300- 'domains' : ['.' .join ([app .id , settings .DEIS_DOMAIN ])]}
301- return Response (response , status = status .HTTP_200_OK )
302- raise PermissionDenied ()
303-
304- def perform_create (self , serializer , ** kwargs ):
305- build = serializer .save (owner = self .user )
306- self .post_save (build )
286+ if not permissions .is_app_user (request , app ):
287+ raise PermissionDenied ()
288+ request .data ['app' ] = app
289+ request .data ['owner' ] = self .user
290+ super (BuildHookViewSet , self ).create (request , * args , ** kwargs )
291+ # return the application databag
292+ response = {'release' : {'version' : app .release_set .latest ().version },
293+ 'domains' : ['.' .join ([app .id , settings .DEIS_DOMAIN ])]}
294+ return Response (response , status = status .HTTP_200_OK )
307295
308296 def post_save (self , build ):
309297 build .create (self .user )
@@ -316,15 +304,13 @@ class ConfigHookViewSet(BaseHookViewSet):
316304
317305 def create (self , request , * args , ** kwargs ):
318306 app = get_object_or_404 (models .App , id = request .data ['receive_repo' ])
319- user = get_object_or_404 (User , username = request .data ['receive_user' ])
307+ request . user = get_object_or_404 (User , username = request .data ['receive_user' ])
320308 # check the user is authorized for this app
321- if user == app .owner or \
322- user in get_users_with_perms (app ) or \
323- user .is_superuser :
324- config = app .release_set .latest ().config
325- serializer = self .get_serializer (config )
326- return Response (serializer .data , status = status .HTTP_200_OK )
327- raise PermissionDenied ()
309+ if not permissions .is_app_user (request , app ):
310+ raise PermissionDenied ()
311+ config = app .release_set .latest ().config
312+ serializer = self .get_serializer (config )
313+ return Response (serializer .data , status = status .HTTP_200_OK )
328314
329315
330316class AppPermsViewSet (BaseDeisViewSet ):
0 commit comments