CheckAdmin.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | EasyAdmin
  4. // +----------------------------------------------------------------------
  5. // | PHP交流群: 763822524
  6. // +----------------------------------------------------------------------
  7. // | 开源协议 https://mit-license.org
  8. // +----------------------------------------------------------------------
  9. // | github开源项目:https://github.com/zhongshaofa/EasyAdmin
  10. // +----------------------------------------------------------------------
  11. namespace app\admin\middleware;
  12. use app\common\service\AuthService;
  13. use think\Request;
  14. /**
  15. * @deprecated 废弃,新版TP不支持在中间件获取控制器相关信息
  16. * 检测用户登录和节点权限
  17. * Class CheckAdmin
  18. * @package app\admin\middleware
  19. */
  20. class CheckAdmin
  21. {
  22. use \app\common\traits\JumpTrait;
  23. public function handle(Request $request, \Closure $next)
  24. {
  25. $adminConfig = config('admin');
  26. $adminId = session('admin.id');
  27. $expireTime = session('admin.expire_time');
  28. /** @var AuthService $authService */
  29. $authService = app(AuthService::class, ['adminId' => $adminId]);
  30. $currentNode = $authService->getCurrentNode();
  31. $currentController = parse_name($request->controller());
  32. // 验证登录
  33. if (!in_array($currentController, $adminConfig['no_login_controller']) &&
  34. !in_array($currentNode, $adminConfig['no_login_node'])) {
  35. empty($adminId) && $this->error('请先登录后台', [], __url(Env::get('easyadmin.admin', '').'/login/index'));
  36. // 判断是否登录过期
  37. if ($expireTime !== true && time() > $expireTime) {
  38. session('admin', null);
  39. $this->error('登录已过期,请重新登录', [], __url(Env::get('easyadmin.admin', '').'/login/index'));
  40. }
  41. }
  42. // 验证权限
  43. if (!in_array($currentController, $adminConfig['no_auth_controller']) &&
  44. !in_array($currentNode, $adminConfig['no_auth_node'])) {
  45. $check = $authService->checkNode($currentNode);
  46. !$check && $this->error('无权限访问');
  47. // 判断是否为演示环境
  48. if(env('easyadmin.is_demo', false) && $request->isPost()){
  49. $this->error('演示环境下不允许修改');
  50. }
  51. }
  52. return $next($request);
  53. }
  54. }