Controller.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace app\admin\controller;
  3. use app\common\exception\BaseException;
  4. use app\JjjController;
  5. use think\facade\Session;
  6. /**
  7. * 商户后台控制器基类
  8. */
  9. class Controller extends JjjController
  10. {
  11. // 商家登录信息
  12. protected $admin;
  13. // 当前控制器名称
  14. protected $controller = '';
  15. // 当前方法名称
  16. protected $action = '';
  17. // 当前路由uri
  18. protected $routeUri = '';
  19. // 当前路由:分组名称
  20. protected $group = '';
  21. // 登录验证白名单
  22. protected $allowAllAction = [
  23. // 登录页面
  24. 'passport/login',
  25. ];
  26. /**
  27. * 后台初始化
  28. */
  29. public function initialize()
  30. {
  31. // 商家登录信息
  32. $this->admin = Session::get('jjjshop_admin');
  33. // 当前路由信息
  34. $this->getRouteinfo();
  35. // 验证登录
  36. $this->checkLogin();
  37. }
  38. /**
  39. * 解析当前路由参数 (分组名称、控制器名称、方法名)
  40. */
  41. protected function getRouteinfo()
  42. {
  43. // 控制器名称
  44. $this->controller = toUnderScore(Request()->controller());
  45. // 方法名称
  46. $this->action = Request()->action();
  47. // 控制器分组 (用于定义所属模块)
  48. $groupstr = strstr($this->controller, '.', true);
  49. $this->group = $groupstr !== false ? $groupstr : $this->controller;
  50. // 当前uri
  51. $this->routeUri = $this->controller . '/' . $this->action;
  52. }
  53. /**
  54. * 验证登录状态
  55. */
  56. private function checkLogin()
  57. {
  58. // 验证当前请求是否在白名单
  59. if (in_array($this->routeUri, $this->allowAllAction)) {
  60. return true;
  61. }
  62. // 验证登录状态
  63. if (!empty($this->admin) || $this->admin['is_login'] == 1) {
  64. return true;
  65. }
  66. throw new BaseException(['code' => -1, 'msg' => 'not_login']);
  67. return false;
  68. }
  69. }