부터: 2.0
저자: Qiang Xue (qiang.xue@gmail.com)
상속: extends yii\base\Component
예제 #1
0
파일: Rbac.php 프로젝트: marvin255/cv
 /**
  * @inheritdoc
  */
 public function allows($action, $user, $request)
 {
     $return = parent::allows($action, $user, $request);
     if ($return === true) {
         //получаем координаты текущего экшэна
         $actionId = $action->id;
         $controllerId = $action->controller->id;
         $moduleId = $action->controller->module !== null ? $action->controller->module->id : null;
         //получаем все права, которые нужно проверить для данного экшэна
         $toTest = ['*/*/*'];
         if ($moduleId) {
             $toTest[] = "{$moduleId}/*/*";
             $toTest[] = "{$moduleId}/{$controllerId}/*";
             $toTest[] = "{$moduleId}/{$controllerId}/{$actionId}";
         } else {
             $toTest[] = "{$controllerId}/*";
             $toTest[] = "{$controllerId}/{$actionId}";
         }
         //проверяем все права
         $passed = false;
         foreach ($toTest as $rule) {
             if (!\Yii::$app->user->can($rule)) {
                 continue;
             }
             $passed = true;
             break;
         }
         return $passed;
     } else {
         return $return;
     }
 }
예제 #2
0
 /**
  * @see http://www.yiiframework.com/doc-2.0/yii-filters-accessrule.html#allows()-detail
  * 
  * Extends allows method with user role check
  */
 public function allows($action, $user, $request)
 {
     if (parent::allows($action, $user, $request) !== null && $this->matchUserRoles($user)) {
         return $this->allow ? true : false;
     }
     return null;
 }
예제 #3
0
 public function allows($action, $user, $request)
 {
     if ($this->matchActionAccess($action, $user, $request)) {
         return parent::allows($action, $user, $request);
     }
     return null;
 }
예제 #4
0
 /**
  * @inheritdoc
  */
 protected function matchRole($user)
 {
     if (System::loadConfig('enable_memmber_login')) {
         return parent::matchRole($user);
     } else {
         Yii::$app->user->logout();
         Yii::$app->getResponse()->redirect('/site/login');
     }
 }
 public function allows($action, $user, $request)
 {
     $parentRes = parent::allows($action, $user, $request);
     // $parentRes can be `null`, `false` or `true`.
     // True means the parent rule matched and allows access.
     if ($parentRes !== true) {
         return $parentRes;
     }
     // admins are allowed to edit entries from other organizations
     if ($user->identity->isAdmin() && $this->allowAdminAllAccess) {
         return true;
     }
     return $this->getOrganizationId($action, $request) == $user->identity->organizer_id;
 }
 protected function matchRole($user)
 {
     if (parent::matchRole($user)) {
         return true;
     }
     if (isset(Yii::$app->controller->model)) {
         $this->params = ['model' => Yii::$app->controller->model];
         foreach ($this->roles as $role) {
             if ($user->can($role, $this->params)) {
                 return true;
             }
         }
     }
     return false;
 }
예제 #7
0
 /** @inheritdoc */
 public function behaviors()
 {
     return ['verbs' => ['class' => VerbFilter::className(), 'actions' => ['delete' => ['post'], 'confirm' => ['post'], 'ban' => ['post']]], 'access' => ['class' => AccessControl::className(), 'ruleConfig' => ['class' => AccessRule::className()], 'rules' => [['allow' => true, 'roles' => ['users:admin-access']]]]];
 }
예제 #8
0
 public function behaviors()
 {
     //        $this->layout = "/main.twig";
     return ['access' => ['class' => AccessControl::className(), 'ruleConfig' => ['class' => AccessRule::className()], 'only' => ['logout'], 'rules' => [['actions' => ['create'], 'allow' => true, 'roles' => ['admin']], ['actions' => ['logout'], 'allow' => true, 'roles' => ['@']], ['actions' => ['view', 'search'], 'allow' => true, 'roles' => ['?', '*', 'admin']]]], 'verbs' => ['class' => VerbFilter::className(), 'actions' => ['logout' => ['post']]]];
 }
예제 #9
0
 public function behaviors()
 {
     return ['verbs' => ['class' => VerbFilter::className(), 'actions' => ['edit-battle' => ['head', 'get', 'post'], '*' => ['head', 'get']]], 'access' => ['class' => AccessControl::className(), 'only' => ['edit-battle'], 'rules' => [['actions' => ['edit-battle'], 'roles' => ['@'], 'allow' => true]], 'ruleConfig' => ['class' => AccessRule::className(), 'matchCallback' => function ($rule, $action) {
         return $action->isEditable;
     }]]];
 }
예제 #10
0
 /**
  * @inheritdoc
  */
 public function behaviors()
 {
     return ['access' => ['class' => AccessControl::className(), 'ruleConfig' => ['class' => AccessRule::className()], 'rules' => [['actions' => ['index', 'create', 'update', 'delete', 'bulk-action', 'ajax-search'], 'allow' => true, 'roles' => ['subscriber']]]], 'verbs' => ['class' => VerbFilter::className(), 'actions' => ['delete' => ['post'], 'bulk-action' => ['post'], 'ajax-search' => ['post']]]];
 }
예제 #11
0
 public function behaviors()
 {
     return ['verbs' => ['class' => VerbFilter::className(), 'actions' => ['delete' => ['post']]], 'access' => ['class' => AccessControl::className(), 'ruleConfig' => ['class' => AccessRule::className()], 'rules' => [['actions' => ['view', 'search', 'index', 'create', 'update', 'delete'], 'allow' => true, 'roles' => ['admin']]]]];
 }
예제 #12
0
 /**
  * Specifies the access control rules.
  * This method is used by the 'accessControl' filter.
  * @return array access control rules
  */
 public function behaviors()
 {
     return ['verbs' => ['class' => VerbFilter::className(), 'actions' => ['delete' => ['post'], 'AjaxUpdateStatus' => ['post'], 'AjaxUpdateSetNew' => ['post'], 'AjaxUpdateSetOld' => ['post'], 'AjaxDelete' => ['post']]], 'access' => ['class' => AccessControl::className(), 'ruleConfig' => ['class' => AccessRule::className()], 'rules' => [['allow' => \Yii::$app->getModule('comments')->isSuperuser() ? true : false, 'roles' => ['@']]]]];
 }
예제 #13
0
 public function behaviors()
 {
     //        $this->layout = "/admin.php";
     return ['access' => ['class' => AccessControl::className(), 'ruleConfig' => ['class' => AccessRule::className()], 'rules' => [['allow' => true, 'roles' => ['manager']]]], 'verbs' => ['class' => VerbFilter::className(), 'actions' => ['logout' => ['post']]]];
 }