RBAC (Role-Based Access Control) - это механизм контроля доступа, который позволяет определить различные роли и разрешения для пользователей в приложении Yii. Используя миграции, можно создать таблицы в базе данных, которые будут хранить информацию о ролях, разрешениях и связях между ними.
Для создания ролей RBAC в Yii с использованием миграций, следуйте этим шагам:
Шаг 1: Генерация миграции
Откройте командную строку в корневой директории вашего приложения Yii и выполните следующую команду:
yii migrate/create create_rbac_tables
Это создаст новую миграцию в папке migrations
вашего приложения.
Шаг 2: Изменение миграции
Откройте созданную миграцию в редакторе кода и добавьте следующий код в метод up()
:
public function up() { $auth = Yii::$app->authManager; // Добавляем роли $admin = $auth->createRole('admin'); $auth->add($admin); $manager = $auth->createRole('manager'); $auth->add($manager); // Добавляем разрешения $createPost = $auth->createPermission('createPost'); $auth->add($createPost); $updatePost = $auth->createPermission('updatePost'); $auth->add($updatePost); // Привязываем разрешения к ролям $auth->addChild($admin, $createPost); $auth->addChild($admin, $updatePost); $auth->addChild($manager, $updatePost); }
В этом примере мы создаем две роли: admin
и manager
. Затем мы создаем два разрешения: createPost
и updatePost
. Мы указываем, что роль admin
имеет оба разрешения, а роль manager
имеет только разрешение updatePost
.
Шаг 3: Применение миграции
Сохраните и закройте файл миграции. Затем выполните следующую команду в командной строке:
yii migrate
Будет применена новая миграция и таблицы для RBAC будут созданы в вашей базе данных.
Шаг 4: Использование ролей и разрешений
Теперь, когда таблицы RBAC созданы, вы можете использовать их в своем приложении Yii. Пример использования роли admin
может выглядеть так:
// Проверка доступа к разрешению createPost if (Yii::$app->user->can('createPost')) { // Роль admin имеет разрешение createPost // выполнение необходимого действия } else { // Сообщение об ошибке или перенаправление }
В этом примере мы используем Yii::$app->user->can('createPost')
для проверки, имеет ли текущий пользователь с ролью admin
разрешение createPost
. Если разрешение присутствует, мы выполняем соответствующее действие, в противном случае мы обрабатываем ошибку или перенаправляем пользователя на другую страницу.
Это только базовый пример создания ролей RBAC в Yii с использованием миграций. Вы также можете настраивать более сложные схемы авторизации, добавлять дополнительные разрешения и связывать их с ролями и пользователями. Документация Yii содержит более подробную информацию о RBAC и его возможностях.