Module.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace wechat\modules\cp;
  3. use Yii;
  4. /**
  5. * cp module definition class
  6. */
  7. class Module extends \yii\base\Module
  8. {
  9. public $layout = 'main';
  10. /**
  11. * @inheritdoc
  12. */
  13. public $controllerNamespace = 'wechat\modules\cp\controllers';
  14. /**
  15. * 不需要登录的路由,由控制器名称加上方法名称组成
  16. * @var array
  17. */
  18. public $notNeedLogin = [];
  19. /**
  20. * 访问控制的白名单,为小写的控制器名称
  21. * @var array
  22. */
  23. public $whiteList = ['account', 'common', 'default'];
  24. /**
  25. * 超级管理员的id,拥有所有权限
  26. */
  27. public $superAdmin = [1];
  28. /**
  29. * @inheritdoc
  30. */
  31. public function init()
  32. {
  33. parent::init();
  34. // custom initialization code goes here
  35. Yii::$app->errorHandler->errorAction = 'cp/default/error';
  36. }
  37. /**
  38. * @param \yii\base\Action $action
  39. * @return bool
  40. */
  41. public function beforeAction($action)
  42. {
  43. if (!Yii::$app->user->id) {
  44. $controllerId = $action->controller->id;
  45. $actionId = $action->id;
  46. $route = $controllerId . '/' . $actionId;
  47. $loginUrl = Yii::$app->user->loginUrl;
  48. if (is_array($loginUrl)) {
  49. $loginUrl = $loginUrl[0];
  50. }
  51. $this->notNeedLogin[] = $loginUrl;
  52. if (!in_array($route, $this->notNeedLogin)) {
  53. $action->controller->redirect(Yii::$app->user->loginUrl);
  54. return false;
  55. }
  56. }
  57. return parent::beforeAction($action);
  58. }
  59. }