From 41994362c0d2ecbb21948886e5ab2cfd464309ef Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Thu, 12 May 2022 11:34:29 +0000
Subject: [PATCH] fix #1044

Closes #1044

Merge request studip/studip!610
---
 .../JsonApi/Routes/Courseware/Authority.php        | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/classes/JsonApi/Routes/Courseware/Authority.php b/lib/classes/JsonApi/Routes/Courseware/Authority.php
index cfc15ce4dc2..fd344da698b 100755
--- a/lib/classes/JsonApi/Routes/Courseware/Authority.php
+++ b/lib/classes/JsonApi/Routes/Courseware/Authority.php
@@ -52,7 +52,19 @@ class Authority
     public static function canUpdateBlock(User $user, Block $resource)
     {
         if ($resource->isBlocked()) {
-            return $resource->getBlockerUserId() == $user->id;
+            $structural_element = $resource->container->structural_element;
+
+            if ($structural_element->range_type === 'user') {
+                return $structural_element->range_id === $user->id;
+            }
+
+            $perm = $GLOBALS['perm']->have_studip_perm(
+                $structural_element->course->config->COURSEWARE_EDITING_PERMISSION,
+                $structural_element->course->id,
+                $user->id
+            );
+
+            return $resource->edit_blocker_id === $user->id || $perm;
         }
 
         return self::canUpdateContainer($user, $resource->container);
-- 
GitLab