2 ответа

  1. Необходимо взглянуть на управление доступом на основе ролей, предоставляемое Yii 2. Подробнее здесь http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

    Сначала необходимо создать разрешения и роли. Похоже, вам понадобится роль пользователя, а затем и роль администратора. Эти две роли будут иметь разные разрешения, и вы можете ограничить действия пользователя на основе их типа роли.

    Это пример создания роли администратора и разрешения addPermission.

    $auth = Yii::$app->authManager;
    
    $permission = $auth->createPermission('addPermissions')
    $permission->description = 'Add User Permissions';
    $auth->add($permission);
    
    $admin = $auth->createRole('admin');
    $auth->add($admin);
    $auth->addChild($admin, $permission);
    

    Затем в контроллере, где вы позволяете пользователю добавить разрешение для другого пользователя, вы можете проверить, что им разрешено выполнять это действие.

    if (\Yii::$app->user->can('addPermission')) {
        // add user permission
    }
    

    Страница, на которую я ссылался, имеет гораздо более подробную информацию, но выше вы начнете.

  2. Спасибо, Келли.
    Помимо того, что вы сказали, можно создать несколько сценариев в пользовательской модели. Таким образом, мы можем запретить любую попытку загрузки модели с атрибутом разрешения из поста.

    Это просто для большей безопасности.