Skip to content
Snippets Groups Projects
Commit a3d5dec9 authored by Ron Lucke's avatar Ron Lucke Committed by Elmar Ludwig
Browse files

fix #3008

Closes #3008

Merge request studip/studip!2064
parent ba199253
No related branches found
No related tags found
No related merge requests found
...@@ -529,9 +529,15 @@ class Authority ...@@ -529,9 +529,15 @@ class Authority
return $GLOBALS['perm']->have_perm('root', $user->id); return $GLOBALS['perm']->have_perm('root', $user->id);
} }
public static function canCreateClipboard(User $user): bool public static function canCreateClipboard(User $user, $resource): bool
{ {
return true; if ($resource instanceof StructuralElement) {
$structural_element = $resource;
} else {
$structural_element = $resource->getStructuralElement();
}
return $structural_element->canEdit($user);
} }
public static function canUpdateClipboard(User $user, Clipboard $resource): bool public static function canUpdateClipboard(User $user, Clipboard $resource): bool
......
...@@ -29,13 +29,14 @@ class ClipboardsCreate extends JsonApiController ...@@ -29,13 +29,14 @@ class ClipboardsCreate extends JsonApiController
{ {
$json = $this->validate($request); $json = $this->validate($request);
$user = $this->getUser($request); $user = $this->getUser($request);
if (!Authority::canCreateClipboard($user)) {
throw new AuthorizationFailedException();
}
$object = $this->getObject($json); $object = $this->getObject($json);
if (!$object) { if (!$object) {
throw new RecordNotFoundException(); throw new RecordNotFoundException();
} }
if (!Authority::canCreateClipboard($user, $object)) {
throw new AuthorizationFailedException();
}
$clipboard = $this->createClipboard($user, $json, $object); $clipboard = $this->createClipboard($user, $json, $object);
return $this->getCreatedResponse($clipboard); return $this->getCreatedResponse($clipboard);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment