|
|
|
@ -12,7 +12,7 @@
|
|
|
|
|
|
|
|
|
|
Фильтры контроля доступа (ACF) являются простым методом, который лучше всего использовать в приложениях с простым |
|
|
|
|
контролем доступа. Как указывает его название, ACF это фильтры, который может присоединяться к контроллеру |
|
|
|
|
или модулю как поведение. ACF проверяет набор [[yii\filters\AccessControl::rules|правил доступа]], чтоб убедится, |
|
|
|
|
или модулю как поведение. ACF проверяет набор [[yii\filters\AccessControl::rules|правил доступа]], чтобы убедится, |
|
|
|
|
что пользователь имеет доступ к запрошенной операции. |
|
|
|
|
|
|
|
|
|
Код ниже показывает как использовать ACF реализованный в [[yii\filters\AccessControl]]: |
|
|
|
@ -77,7 +77,7 @@ class SiteController extends Controller
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
[[yii\filters\AccessRule|Правила доступа]] поддерживают набор свойств. Ниже краткое описание поддерживаемых опций. |
|
|
|
|
Вы также можете расширить [[yii\filters\AccessRule]], чтоб создать свой собственный класс правил доступа. |
|
|
|
|
Вы также можете расширить [[yii\filters\AccessRule]], чтобы создать свой собственный класс правил доступа. |
|
|
|
|
|
|
|
|
|
* [[yii\filters\AccessRule::allow|allow]]: задаёт какое это правило, "allow" или "deny". |
|
|
|
|
|
|
|
|
@ -341,7 +341,7 @@ public function signup()
|
|
|
|
|
|
|
|
|
|
Как упомянуто выше, правила добавляют дополнительные ограничения на роли и разрешения. Правила это классы, расширяющие |
|
|
|
|
[[yii\rbac\Rule]]. Они должны реализовывать метод [[yii\rbac\Rule::execute()|execute()]]. В иерархии, созданной нами ранее, |
|
|
|
|
автор не можете редактировать свой пост. Давайте исправим это. Во-первых, мы должны создать правило проверяющее, |
|
|
|
|
автор не может редактировать свой пост. Давайте исправим это. Во-первых, мы должны создать правило проверяющее, |
|
|
|
|
что пользователь является автором поста: |
|
|
|
|
|
|
|
|
|
```php |
|
|
|
@ -412,7 +412,7 @@ if (\Yii::$app->user->can('createPost')) {
|
|
|
|
|
|
|
|
|
|
![Проверка доступа](images/rbac-access-check-1.png "Проверка доступа") |
|
|
|
|
|
|
|
|
|
Для того чтоб проверить может ли пользователь обновить пост, нам надо передать дополнительный параметр, |
|
|
|
|
Для того чтобы проверить может ли пользователь обновить пост, нам надо передать дополнительный параметр, |
|
|
|
|
необходимый для правила `AuthorRule`, описанного ранее: |
|
|
|
|
|
|
|
|
|
```php |
|
|
|
@ -425,7 +425,7 @@ if (\Yii::$app->user->can('updatePost', ['post' => $post])) {
|
|
|
|
|
|
|
|
|
|
![Проверка доступа](images/rbac-access-check-2.png "Проверка доступа") |
|
|
|
|
|
|
|
|
|
Мы начинаем с `updatePost` и переходим к `updateOwnPost`. Для того чтоб это произошло, правило `AuthorRule` должно вернуть |
|
|
|
|
Мы начинаем с `updatePost` и переходим к `updateOwnPost`. Для того чтобы это произошло, правило `AuthorRule` должно вернуть |
|
|
|
|
`true` при вызове метода `execute`. Метод получает `$params` переданный при вызове метода `can`, значение которого равно |
|
|
|
|
`['post' => $post]`. Если всё правильно мы увидим, что `author` привязан к John. |
|
|
|
|
|
|
|
|
|