Sfoglia il codice sorgente

增加跳过权限和登录验证的配置方式

jqh 5 anni fa
parent
commit
ae4b44c090

+ 6 - 1
src/Http/Middleware/Authenticate.php

@@ -49,7 +49,12 @@ class Authenticate
      */
     protected function shouldPassThrough($request)
     {
-        foreach (config('admin.auth.except', []) as $except) {
+        $excepts = array_merge(
+            (array) config('admin.auth.except', []),
+            Admin::context()->getArray('auth.except')
+        );
+
+        foreach ($excepts as $except) {
             $except = admin_base_path($except);
 
             if ($except !== '/') {

+ 6 - 1
src/Http/Middleware/Permission.php

@@ -101,7 +101,12 @@ class Permission
             return true;
         }
 
-        foreach (config('admin.permission.except', []) as $except) {
+        $excepts = array_merge(
+            (array) config('admin.permission.except', []),
+            Admin::context()->getArray('permission.except')
+        );
+
+        foreach ($excepts as $except) {
             $except = admin_base_path($except);
 
             if ($except !== '/') {

+ 36 - 0
src/Support/Context.php

@@ -17,11 +17,47 @@ use Illuminate\Support\Fluent;
  */
 class Context extends Fluent
 {
+    public function set($key, $value = null)
+    {
+        $data = is_array($key) ? $key : [$key => $value];
+
+        foreach ($data as $key => $value) {
+            Arr::set($this->attributes, $key, $value);
+        }
+
+        return $this;
+    }
+
     public function get($key, $default = null)
     {
         return Arr::get($this->attributes, $key, $default);
     }
 
+    public function getArray($key, $default = null)
+    {
+        return Helper::array($this->get($key, $default));
+    }
+
+    public function add($key, $value, $k = null)
+    {
+        $results = $this->getArray($key);
+
+        if ($k !== null) {
+            $results[] = $value;
+        } else {
+            $results[$k] = $value;
+        }
+
+        return $this->set($key, $results);
+    }
+
+    public function addMany($key, array $value)
+    {
+        $results = $this->getArray($key);
+
+        return $this->set($key, array_merge($results, $value));
+    }
+
     public function forget($keys)
     {
         Arr::forget($this->attributes, $keys);

+ 37 - 0
src/Support/Setting.php

@@ -60,6 +60,43 @@ class Setting extends Fluent
         return $this;
     }
 
+    /**
+     * 追加数据.
+     *
+     * @param mixed $key
+     * @param mixed $value
+     * @param mixed $k
+     *
+     * @return $this
+     */
+    public function add($key, $value, $k = null)
+    {
+        $results = $this->getArray($key);
+
+        if ($k !== null) {
+            $results[] = $value;
+        } else {
+            $results[$k] = $value;
+        }
+
+        return $this->set($key, $results);
+    }
+
+    /**
+     * 批量追加数据.
+     *
+     * @param string $key
+     * @param array  $value
+     *
+     * @return $this
+     */
+    public function addMany($key, array $value)
+    {
+        $results = $this->getArray($key);
+
+        return $this->set($key, array_merge($results, $value));
+    }
+
     /**
      * 保存配置到数据库.
      *