auth: admin edit permissions for page (sub)directories
authorMischa POSLAWSKY <perl@shiar.org>
Thu, 24 Oct 2019 03:31:40 +0000 (05:31 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Sun, 27 Oct 2019 00:36:38 +0000 (02:36 +0200)
Allow edit parameters to match parent directories; for example "edit doc"
to maintain all but only documents.

auth.inc.php

index 7ece6350219902345e504b9d253156200f2d982d..aceb2de076c3481dc53a61c24e4444f88c866a2d 100644 (file)
@@ -43,9 +43,11 @@ class User
                        if (!$this->admin) {
                                return FALSE;  # empty results
                        }
-                       @list ($rootlevel, $sublevel) = explode(' ', $permission);
-                       if ($sublevel and isset($this->admin[$rootlevel])) {
-                               return TRUE;  # root match
+                       preg_match_all('{[ /]}', $permission, $parts, PREG_OFFSET_CAPTURE);
+                       foreach ($parts[0] as $part) {
+                               if (isset($this->admin[substr($permission, 0, $part[1])])) {
+                                       return TRUE;  # partial match
+                               }
                        }
                        return isset($this->admin[$permission]);  # check level
                }