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,19 +7,9 @@ class Permissions {
7 7
    * @param string $MinClass Return false if the user's class level is below this.
8 8
    */
9 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,7 +26,7 @@ class Permissions {
36 26
         SELECT Level AS Class, `Values` AS Permissions, Secondary, PermittedForums
37 27
         FROM permissions
38 28
         WHERE ID = '$PermissionID'");
39
-      $Permission = G::$DB->next_record(MYSQLI_ASSOC, array('Permissions'));
29
+      $Permission = G::$DB->next_record(MYSQLI_ASSOC, ['Permissions']);
40 30
       G::$DB->set_query_id($QueryID);
41 31
       $Permission['Permissions'] = unserialize($Permission['Permissions']);
42 32
       G::$Cache->cache_value("perm_$PermissionID", $Permission, 2592000);
@@ -87,7 +77,7 @@ class Permissions {
87 77
       $CustomPermissions = [];
88 78
     }
89 79
 
90
-    $MaxCollages = $Permissions['Permissions']['MaxCollages'] + $BonusCollages;
80
+    $MaxCollages = ($Permissions['Permissions']['MaxCollages'] ?? 0) + $BonusCollages;
91 81
     if (isset($CustomPermissions['MaxCollages'])) {
92 82
       $MaxCollages += $CustomPermissions['MaxCollages'];
93 83
       unset($CustomPermissions['MaxCollages']);
@@ -101,8 +91,7 @@ class Permissions {
101 91
   }
102 92
 
103 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,7 +206,7 @@ if (isset($_COOKIE['session']) && isset($_COOKIE['userid'])) {
206 206
         'SessionID' => $SessionID,
207 207
         'Browser' => $Browser,
208 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 210
         'LastUpdate' => sqltime() );
211 211
     $Cache->insert_front($SessionID, $UsersSessionCache);
212 212
     $Cache->commit_transaction(0);

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

@@ -28,7 +28,7 @@ if (!check_perms('users_view_keys', $Class)) {
28 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 33
 $DB->query("
34 34
   SELECT

Loading…
Cancel
Save