]> BookStack Code Mirror - bookstack/commitdiff
Added caching to the loading of system roles
authorDan Brown <redacted>
Thu, 23 Feb 2023 23:01:03 +0000 (23:01 +0000)
committerDan Brown <redacted>
Thu, 23 Feb 2023 23:01:03 +0000 (23:01 +0000)
Admin system role was being loaded for each permission check performed.
This caches the fetching for the request lifetime.

app/Auth/Role.php

index d6c4a09519ea9b8717009709e5e6ba0e1ec5fbc5..8f9702fa0e39b7bcdd9a105a1fc432853ead4a0c 100644 (file)
@@ -111,7 +111,13 @@ class Role extends Model implements Loggable
      */
     public static function getSystemRole(string $systemName): ?self
     {
-        return static::query()->where('system_name', '=', $systemName)->first();
+        static $cache = [];
+
+        if (!isset($cache[$systemName])) {
+            $cache[$systemName] = static::query()->where('system_name', '=', $systemName)->first();
+        }
+
+        return $cache[$systemName];
     }
 
     /**