| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- <?php
 
- namespace app\admin\middleware;
 
- use app\admin\attr\Permission;
 
- use app\common\exception\CatchException;
 
- use app\common\model\Admin;
 
- use think\Request;
 
- class CheckPermissionAttr
 
- {
 
-     public function handle(Request $request, \Closure $next)
 
-     {
 
-         // 通过依赖注入获取admin
 
-         $admin = app(Admin::class);
 
-         $role = $admin->role;
 
-         $codes = $role->codes;
 
-         // 获取权限注解
 
-         $controller = 'app\\admin\\controller\\'. $request->controller();
 
-         $ref = new \ReflectionClass($controller);
 
-         $attrs = $ref->getAttributes(Permission::class);
 
-         // 检查权限
 
-         /**
 
-          * @var \ReflectionAttribute $attrRaw 
 
-          */
 
-         foreach($attrs as $attrRaw) {
 
-             /**
 
-              * @var Permission
 
-              */
 
-             $attr = $attrRaw->newInstance();
 
-             $permission = $attr->value;
 
-             if (false && !in_array($permission, $codes)) {
 
-                 throw new CatchException("未具有权限$permission, 禁止访问", 403);
 
-             }
 
-         }
 
-         return $next($request);
 
-     }
 
- }
 
 
  |