Как настроить rbac для двух таблиц

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Boglik
Сообщения: 42
Зарегистрирован: 2018.10.16, 04:49

Как настроить rbac для двух таблиц

Сообщение Boglik »

Есть две таблицы пользователей. (user и komsostav_user например)
Сделал авторизацию по адресу /user и /enter
Раздельную.
User.php и Komsostav_user.php - модели

Как сделать проверку доступа , т.к. в header.php у меня сейчас так и должно выводиться соответствующая строка

Код: Выделить всё

<?php


            if (Yii::$app->user->can('admin')) {
                echo '<li><a href="/admin/">Админ-панель</a></li>';
            }
            if (Yii::$app->user->can('mehan')) {
                echo '<li><a href="/admin/">Админ-панель</a></li>';
            }
            if (Yii::$app->user->can('udgu')) {
                echo '<li><a href="/admin/">Админ-панель</a></li>';
            }
            if (Yii::$app->user->can('ggpi')) {
                echo '<li><a href="/admin/">Админ-панель</a></li>';
            }
            if (Yii::$app->user->can('egida')) {
                echo '<li><a href="/admin/">Админ-панель</a></li>';
            }
                        if (Yii::$app->user->can('Izhgsha')) {
                echo '<li><a href="/admin/">Админ-панель</a></li>';
            }
            if (Yii::$app->user->can('regstab')) {
                echo '<li><a href="/admin/">Админ-панель</a></li>';
            }
            if (Yii::$app->user->can('user')) {
                echo '<li><a href="/kabinet">Личный кабинет</a></li>';
            }
            if (Yii::$app->user->can('kurator')) {
                echo '<li><a href="/kurator">Кабинет</a></li>';
            }
                        if (Yii::$app->user->can('komsostav')) {
                echo '<li><a href="/kurator">Кабинет  комсостава</a></li>';
            }
            ?>
Все роли я сделал в базе данных, но проверка не производится.
oklimm
Сообщения: 4
Зарегистрирован: 2022.09.01, 17:46

Re: Как настроить rbac для двух таблиц

Сообщение oklimm »

Вы можете создать свой компонент (напр. Komsostav_user в папке components внутри проекта), наследующийся от \yii\web\User и переопределяющий некоторые его свойства (чтобы не путались сессии пользователей). Затем подключить этот компонент в конфиге:

Код: Выделить всё

        'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
        ],
        'komsostavUser' => [
            'identityClass' => 'app\models\Komsostav_user',
            'class' => 'app\components\Komsostav_user',
            'enableAutoLogin' => true,
        ],
Потом сможете авторизовывать пользователей через Yii::$app->komsostavUser->login() и проверять права через Yii::$app->komsostavUser->can().

Ну или отказаться от двух таблиц, и разграничить доступ только ролями.
Ответить