Как адаптировать rbac к таблице users

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
Аватара пользователя
svil
Сообщения: 482
Зарегистрирован: 2018.02.12, 22:41

Как адаптировать rbac к таблице users

Сообщение svil » 2019.05.05, 16:40

есть rbac с миграциями и модель user с полями username, auth_key,password_hash, password_reset_token,email,status ,created_at, updated_at
Модель user в YII2 из коробки.
Модель Users для нужд системы следующий:

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

Table users {
  id int [pk]
  surname text [note: "Фамилия"]
  name text [note: "Имя"]
  lastname text [note: "Отчество"]
  code text [note: "Код"]
  status text [note: "Статус пользователя"]
  timecreate int [note: "Дата создания"]
  basket tinyint [note: "Флаг удаления"]
}
Как соединить модель user с users из rbac?
Можно ли rbac настроить на модель users?Там нет пароля, только код.
Или связать таблицы user и users как 1:1 username=code?
Последний раз редактировалось svil 2019.05.05, 21:20, всего редактировалось 2 раза.

Аватара пользователя
svil
Сообщения: 482
Зарегистрирован: 2018.02.12, 22:41

Re: Как адаптировать rbac к теблице user

Сообщение svil » 2019.05.05, 17:37

Компонент user управляет статусом аутентификации пользователя(проверка подлинности).
Авторизацией (ролями)управляет RBAC по 4 таблицам.
В yii2 процессы аутентификации/авторизации задействуют 5 таблиц "из коробки" user, auth_item, auth_item_child, auth_assignment, auth_rule.
Данные о пользователе хранятся в таблице БД приложения, не имеющей отношения к авторизации/аутентификации.
И связаны таблица users(хранит данные о пользователе) с таблицей аутентификации user может быть по любому полю, однозначно идентифицирующего пользователя и имеющегося в обеих таблицах. В данном случае это username в таблице user и code в таблице users.
Я правильно рассуждаю?

Аватара пользователя
leonenco
Сообщения: 106
Зарегистрирован: 2017.01.30, 22:42

Re: Как адаптировать rbac к таблице users

Сообщение leonenco » 2019.05.06, 07:06

(users) - Это фактически профайл юзера. Если так, вяжите ее с таблицей user. В таблице users делайте поле user_id и создаете форейн кей привязки user->users on user.id = users.user_id, on update -> NO ACTION, on delete -> CASCADE.

Ответить