Fixed hardcoded user_id for full access
authorJean-Michel Vourgère <jvourger@greenpeace.org>
Thu, 9 Mar 2017 17:16:09 +0000 (17:16 +0000)
committerJean-Michel Vourgère <jvourger@greenpeace.org>
Thu, 9 Mar 2017 18:06:31 +0000 (18:06 +0000)
webroot/squasher.class.php
webroot/squasher.php

index 35555434151026f2d21190cf469a8791cb74518c..a992c333cd93362e29101fa102bc85c2d20f3f8a 100644 (file)
@@ -233,6 +233,32 @@ function remove_users($u) {
        $r = mysql_query($q);
 }
 
+
+/**
+ * Get the permissions of a user over the file tree
+ *
+ * This builds a permission array, which is kind of recursive:
+ * The array keys are the name of the directories, and the values are an array
+ * hereby described.
+ * The special key __access__ indicates the permission of a given directory,
+ * its values can be:
+ * 0 --deny-all
+ * 1 --allow-dir-only
+ * 2 --allow-inc-subs
+ *
+ * Exemple:
+ *  [myas] => Array
+ *      [__access__] => 0
+ *  [myez] => Array
+ *      [__access__] => 1
+ *      [subfolder01] => Array
+ *          [__access__] => 2
+ *      [subfolder02] => Array
+ *          [__access__] => 2
+ *
+ * @param string user_id User id
+ * @return array Multidimensional array with dir and __access__ keys, and 0/1/2 values
+ */
 function get_rights($user_id) {
        $result = array();
 
@@ -263,11 +289,39 @@ function get_rights($user_id) {
        return $result;
 }
 
+
+/**
+ * Get super user permissions, full recursive access on /
+ *
+ * @return array Permissions
+ */
+function get_superuser_rights() {
+       return  array('__access__' => 2);
+}
+
+
+/**
+ * Initialise this->folderrights or this->$userrights
+ *
+ * this->folderrights are the permissions of the logged in user
+ * this->userrights are the permissions of the user beeing edited
+ * 
+ * @see get_rights
+ *
+ * @param string user_id User id or -1 for full access
+ * @param string type 'folderrights' or 'userrights'
+ * 
+ */
 function give_rights($user_id, $type='folderrights') {
+       if ($user_id == -1)
+               $rights = $this->get_superuser_rights();
+       else
+               $rights = $this->get_rights($user_id);
+
        if ($type=='folderrights')
-               $this->folderrights = $this->get_rights($user_id);
+               $this->folderrights = $rights;
        else // $type=='userrights'
-               $this->userrights = $this->get_rights($user_id);
+               $this->userrights = $rights;
 }
 
 function update_rights($edited_user, $m, $admin_level) {
index f8dcd58d4352829a7c30076a62f4d7636e2b12fb..61b5645e0165df6108fe39b4c3b4f0e173f748de 100644 (file)
@@ -27,7 +27,7 @@ if (@$_POST['edited_user'] > 0 && @$_POST['formtype'] == 'folderrights')
 
 //set folder rights
 if (@$_GET['f']) {
-       $squashweb->give_rights(2);
+       $squashweb->give_rights(-1); // full access
 } else {
        $squashweb->give_rights($_SESSION['creds']['user_id']);
 }