Bandicoot
@Bandicoot
Вась-программист

Можно ли в basic шаблоне Yii2 разделить аутентификацию?

Пилю сайт, в котором будет предусмотрена работа с клиентской базой - профиль пользователя, личный кабинет итд.
Соответственно, будет и админка, которой будет пользоваться группа людей - админ, менеджеры, операторы итд.
Не хотелось бы хранить все эти учетные записи в одной таблице users, тут явно нужно разделение. Например, users для группы администрации сайта и clients для клиентов.

Насколько я понял, за аутентификацию в yii2 отвечает класс yii\web\User, и в yii2-basic шаблоне она общая. Т.е. если у админа id из таблицы users равен 1, а у клиента id из таблицы clients он тоже равен 1, то они будут перекрывать друг друга.

Правильно ли я понимаю схему работы и можно ли разделить аутентификацию, не переводя проект на advanced-шаблон? Может вопрос ламерский, то чет пока не допер)
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 3
Maksclub
@Maksclub
maksfedorov.ru
Возьмите готовый модуль https://github.com/dektrium/yii2-rbac

С ним уже БД будет отлично разделена, будет 4 таблицы с правами, с ролями и profile (тут личные данные и хранятся)
В родной таблице будут храниться только логин и доступы
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Не хотелось бы хранить все эти учетные записи в одной таблице users, тут явно нужно разделение

Почему? Если они отличаются только ролью, то это не верно разбивать на разные таблицы, при чем с какой стороны не посмотри. Как минимум как Вы будете однозначно определять пользователя? Вы обрекаете себя на кучу геморроя при отсутствии хоть какой-либо выгоды. Смысл?

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

Для этого существуют связанные данные. Но сама таблица User будет одна. Примерная, упрощенная схема:
User: id | user_name | pass
User_dop_fields: id | fild_name | some_fild_settings
User_dop_fields_value: id | user_id | dop_fild_id | value
Dop_fields_by_role: id | role_name | dop_fild_id
ну и плюс 4 таблицы стандартные для rbac. Все У Вас пользователь имеет в зависимости от роли разный набор параметров + их можно динамически добавлять.
Ответ написан
Комментировать
Как вариант можно в конфиге сделать так:
'components' => [
        ...
        'userAdmin' => [
            'identityClass' => 'common\models\UserAdmin',
        ],
        'userClient' => [
            'identityClass' => 'common\models\UserClient',
        ],
        ...
},

И далее для админов и клиентов использовать свои классы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы