Browse Source

Simplify check_perms logic

Also miscellaneous permission-related fixes
spaghetti 8 years ago
parent
commit
f995d3d1c3

+ 6
- 17
classes/permissions.class.php View File

7
    * @param string $MinClass Return false if the user's class level is below this.
7
    * @param string $MinClass Return false if the user's class level is below this.
8
    */
8
    */
9
   public static function check_perms($PermissionName, $MinClass = 0) {
9
   public static function check_perms($PermissionName, $MinClass = 0) {
10
-
11
-    $OverrideClass = 1000;
12
-    $Override = G::$LoggedUser['EffectiveClass'] >= $OverrideClass;
13
-
14
-    return (
15
-      ($PermissionName == null
16
-        || (isset(G::$LoggedUser['Permissions'][$PermissionName])
17
-          && G::$LoggedUser['Permissions'][$PermissionName]))
18
-      && G::$LoggedUser['Permissions'][$PermissionName]
19
-      && (G::$LoggedUser['Class'] >= $MinClass
20
-        || G::$LoggedUser['EffectiveClass'] >= $MinClass
21
-        || $Override)
22
-    );
10
+    if (G::$LoggedUser['EffectiveClass'] >= 1000) return true; // Sysops can do anything
11
+    if (G::$LoggedUser['EffectiveClass'] < $MinClass) return false; // MinClass failure
12
+    return G::$LoggedUser['Permissions'][$PermissionName] ?? false; // Return actual permission
23
   }
13
   }
24
 
14
 
25
   /**
15
   /**
36
         SELECT Level AS Class, `Values` AS Permissions, Secondary, PermittedForums
26
         SELECT Level AS Class, `Values` AS Permissions, Secondary, PermittedForums
37
         FROM permissions
27
         FROM permissions
38
         WHERE ID = '$PermissionID'");
28
         WHERE ID = '$PermissionID'");
39
-      $Permission = G::$DB->next_record(MYSQLI_ASSOC, array('Permissions'));
29
+      $Permission = G::$DB->next_record(MYSQLI_ASSOC, ['Permissions']);
40
       G::$DB->set_query_id($QueryID);
30
       G::$DB->set_query_id($QueryID);
41
       $Permission['Permissions'] = unserialize($Permission['Permissions']);
31
       $Permission['Permissions'] = unserialize($Permission['Permissions']);
42
       G::$Cache->cache_value("perm_$PermissionID", $Permission, 2592000);
32
       G::$Cache->cache_value("perm_$PermissionID", $Permission, 2592000);
87
       $CustomPermissions = [];
77
       $CustomPermissions = [];
88
     }
78
     }
89
 
79
 
90
-    $MaxCollages = $Permissions['Permissions']['MaxCollages'] + $BonusCollages;
80
+    $MaxCollages = ($Permissions['Permissions']['MaxCollages'] ?? 0) + $BonusCollages;
91
     if (isset($CustomPermissions['MaxCollages'])) {
81
     if (isset($CustomPermissions['MaxCollages'])) {
92
       $MaxCollages += $CustomPermissions['MaxCollages'];
82
       $MaxCollages += $CustomPermissions['MaxCollages'];
93
       unset($CustomPermissions['MaxCollages']);
83
       unset($CustomPermissions['MaxCollages']);
101
   }
91
   }
102
 
92
 
103
   public static function is_mod($UserID) {
93
   public static function is_mod($UserID) {
104
-    $Permissions = self::get_permissions_for_user($UserID);
105
-    return isset($Permissions['users_mod']) && $Permissions['users_mod'];
94
+    return self::get_permissions_for_user($UserID)['users_mod'] ?? false;
106
   }
95
   }
107
 }
96
 }
108
 ?>
97
 ?>

+ 1
- 1
classes/script_start.php View File

206
         'SessionID' => $SessionID,
206
         'SessionID' => $SessionID,
207
         'Browser' => $Browser,
207
         'Browser' => $Browser,
208
         'OperatingSystem' => $OperatingSystem,
208
         'OperatingSystem' => $OperatingSystem,
209
-        'IP' => ((apcu_exists('DBKEY')) ? DBCrypt::encrypt($_SERVER['REMOTE_ADDR']) : $UserSessions[$SessionID]['IP']),
209
+        'IP' => (apcu_exists('DBKEY') ? DBCrypt::encrypt($_SERVER['REMOTE_ADDR']) : $UserSessions[$SessionID]['IP']),
210
         'LastUpdate' => sqltime() );
210
         'LastUpdate' => sqltime() );
211
     $Cache->insert_front($SessionID, $UsersSessionCache);
211
     $Cache->insert_front($SessionID, $UsersSessionCache);
212
     $Cache->commit_transaction(0);
212
     $Cache->commit_transaction(0);

+ 1
- 1
sections/userhistory/passkey_history.php View File

28
   error(403);
28
   error(403);
29
 }
29
 }
30
 
30
 
31
-View::show_header("PassKey history for $Username");
31
+View::show_header("Passkey history for $Username");
32
 
32
 
33
 $DB->query("
33
 $DB->query("
34
   SELECT
34
   SELECT

Loading…
Cancel
Save