AdminAuthenticate.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. class AdminAuthenticate
  5. {
  6. /**
  7. * Handle an incoming request.
  8. *
  9. * @param \Illuminate\Http\Request $request
  10. * @param \Closure $next
  11. * @return mixed
  12. */
  13. public function handle($request, Closure $next)
  14. {
  15. if($request->user()->cannot('admin.login')){
  16. abort(403);
  17. }
  18. $routeName = $request->route()->getName();
  19. if(!$request->session()->get('admin.login') && $routeName !== 'admin.account.login'){
  20. return redirect(route('admin.account.login'));
  21. }
  22. /*超级管理员不受权限策略影响*/
  23. if(in_array($routeName,['admin.account.login','admin.account.logout'])){
  24. return $next($request);
  25. }
  26. /*加入权限检测逻辑*/
  27. if(!str_contains($routeName,['admin.setting'])){
  28. $routeName = substr($routeName,0,strripos($routeName,".")) . '.index';
  29. }
  30. if(!$request->user()->hasPermission($routeName)){
  31. abort(403);
  32. }
  33. return $next($request);
  34. }
  35. }