AddonsController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace common\controllers;
  3. use Yii;
  4. use yii\filters\AccessControl;
  5. use yii\web\Controller;
  6. use yii\web\UnauthorizedHttpException;
  7. use common\helpers\Auth;
  8. use common\traits\BaseAction;
  9. use common\enums\AppEnum;
  10. /**
  11. * 模块基类控制器
  12. *
  13. * Class AddonsController
  14. * @package common\controllers
  15. * @author jianyan74 <751393839@qq.com>
  16. */
  17. class AddonsController extends Controller
  18. {
  19. use BaseAction;
  20. /**
  21. * 视图自动加载文件路径
  22. *
  23. * @var string
  24. */
  25. public $layout = null;
  26. /**
  27. * @throws \yii\base\InvalidConfigException
  28. */
  29. public function init()
  30. {
  31. parent::init();
  32. // 后台视图默认载入模块视图
  33. if (!$this->layout && in_array(Yii::$app->id, AppEnum::admin())) {
  34. if (Yii::$app->id == AppEnum::MERCHANT) {
  35. $this->layout = '@' . AppEnum::BACKEND . '/views/layouts/addon';
  36. } else {
  37. $this->layout = '@' . Yii::$app->id . '/views/layouts/addon';
  38. }
  39. }
  40. }
  41. /**
  42. * @return array
  43. */
  44. public function behaviors()
  45. {
  46. $behaviors = [];
  47. if (in_array(Yii::$app->id, AppEnum::admin())) {
  48. $behaviors['access'] = [
  49. 'class' => AccessControl::class,
  50. 'rules' => [
  51. [
  52. 'allow' => true,
  53. 'roles' => ['@'], // 登录
  54. ],
  55. ],
  56. ];
  57. }
  58. return $behaviors;
  59. }
  60. /**
  61. * @param $action
  62. * @return bool
  63. * @throws UnauthorizedHttpException
  64. * @throws \yii\web\BadRequestHttpException
  65. */
  66. public function beforeAction($action)
  67. {
  68. if (!parent::beforeAction($action)) {
  69. return false;
  70. }
  71. // 每页数量
  72. $this->pageSize = Yii::$app->request->get('per-page', 10);
  73. $this->pageSize > 50 && $this->pageSize = 50;
  74. // 后台进行权限校验
  75. if (in_array(Yii::$app->id, [AppEnum::MERCHANT, AppEnum::BACKEND])) {
  76. // 判断当前模块的是否为主模块, 模块+控制器+方法
  77. $permissionName = '/' . Yii::$app->controller->route;
  78. // 判断是否忽略校验
  79. if (in_array($permissionName, Yii::$app->params['noAuthRoute'])) {
  80. return true;
  81. }
  82. // 开始权限校验
  83. if (!Auth::verify($permissionName)) {
  84. throw new UnauthorizedHttpException('对不起,您现在还没获此操作的权限');
  85. }
  86. // 记录上一页跳转
  87. $this->setReferrer($action->id);
  88. }
  89. return true;
  90. }
  91. }
粤ICP备19079148号