BaseController.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace backend\controllers;
  3. use Yii;
  4. use yii\helpers\Url;
  5. class BaseController extends \yii\web\Controller
  6. {
  7. public function beforeAction($event){
  8. if(Yii::$app->user->isGuest){
  9. return true;
  10. }
  11. $auth = Yii::$app->authManager;
  12. $auth->getPermissionsByUser(Yii::$app->user->id);
  13. $controller = Yii::$app->controller->id;
  14. $controller = str_replace('-','',$controller);
  15. $access = ucfirst($controller).'Controller::'.$event->actionMethod;
  16. $auth = Yii::$app->authManager;
  17. //没有配置权限,即无权限限制
  18. if(!$a = $auth->getPermission($access) && Yii::$app->getErrorHandler()->exception === null) {
  19. return true;
  20. }
  21. if(!Yii::$app->user->can($access) && Yii::$app->getErrorHandler()->exception === null) {
  22. $permission = $auth->getPermission($access);
  23. if(Yii::$app->request->isAjax){
  24. echo json_encode(['status'=>0,'msg'=>'您无权限访问该方法']);
  25. Yii::$app->end();
  26. }else{
  27. Yii::$app->getSession()->setFlash('error','没有权限访问或执行。');
  28. if(empty(Yii::$app->request->referrer)){
  29. Yii::$app->response->redirect(Url::toRoute(['site/home']));
  30. }else{
  31. Yii::$app->response->redirect(Yii::$app->request->referrer);
  32. }
  33. return false;
  34. Yii::$app->end();
  35. }
  36. }
  37. return true;
  38. }
  39. public static function navChecked($controller,$action){
  40. $access = ucfirst($controller).'Controller::action'.ucfirst($action);
  41. if(Yii::$app->user->can($access)){
  42. return true;
  43. }
  44. return false;
  45. }
  46. }