Permission.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace Hugh\AdminPermissionOptimize\Middleware;
  3. use Encore\Admin\Auth\Permission as Checker;
  4. use Encore\Admin\Facades\Admin;
  5. use Illuminate\Http\Request;
  6. class Permission extends \Encore\Admin\Middleware\Permission
  7. {
  8. /**
  9. * Handle an incoming request.
  10. *
  11. * @param \Illuminate\Http\Request $request
  12. * @param \Closure $next
  13. * @param array $args
  14. *
  15. * @return mixed
  16. */
  17. public function handle(Request $request, \Closure $next, ...$args)
  18. {
  19. if (config('admin.check_route_permission') === false) {
  20. return $next($request);
  21. }
  22. $user = Admin::user();
  23. if (!$user || !empty($args) || $this->shouldPassThrough($request)) {
  24. return $next($request);
  25. }
  26. if ($this->checkRoutePermission($request)) {
  27. return $next($request);
  28. }
  29. if (!$user->roles->pluck('permissions')->flatten()->merge($user->permissions)->unique('id')->first(function ($permission) use ($request) {
  30. return $permission->shouldPassThrough($request);
  31. })) {
  32. Checker::error();
  33. }
  34. return $next($request);
  35. }
  36. }