Преглед изворни кода

让 Horizon 使用 admin guard 鉴权,避免按前台 customer 会话判断。

Co-authored-by: Cursor <cursoragent@cursor.com>
chengwl пре 2 дана
родитељ
комит
b0e0140c97
1 измењених фајлова са 17 додато и 2 уклоњено
  1. 17 2
      app/Providers/HorizonServiceProvider.php

+ 17 - 2
app/Providers/HorizonServiceProvider.php

@@ -20,6 +20,22 @@ class HorizonServiceProvider extends HorizonApplicationServiceProvider
         // Horizon::routeSlackNotificationsTo('slack-webhook-url', '#channel');
     }
 
+    /**
+     * Authorize Horizon with the admin guard.
+     *
+     * The default guard is customer, so the framework callback would inspect
+     * the storefront user. Dashboard access follows the admin session instead.
+     */
+    protected function authorization(): void
+    {
+        $this->gate();
+
+        Horizon::auth(function ($request) {
+            return Gate::forUser($request->user('admin'))->check('viewHorizon')
+                || app()->environment('local');
+        });
+    }
+
     /**
      * Register the Horizon gate.
      *
@@ -29,8 +45,7 @@ class HorizonServiceProvider extends HorizonApplicationServiceProvider
     {
         Gate::define('viewHorizon', function ($user = null) {
             return in_array(optional($user)->email, [
-                "admin@longyi.com"
-                //
+                'admin@longyi.com',
             ]);
         });
     }