@Alk90
php, mysql, jquery, css, html, api

Как сохранить другую сущность при авторизации?

Всем привет!
У меня есть БД в которой в разных таблицах есть пациенты и врачи, мне нужно для каждого сделать свой кабинет.
При авторизации через телефон пользователь выбирает авторизуется он как пациент или как врач. На стороне проверки кода который был отправлен через СМС я выполняю такой метод:
$user = Users::where('id', $id)->first();
Auth::login($user);

Или
$doctor= Doctors::where('id', $id)->first();
Auth::login($doctor);

Но при авторизации как врач, и при извлечении потом данных таким способом Auth::user(); я получаю модель Users, соотвественно дальше ничего не работает. Подскажите пожалуйста как сохранить модель Doctors как авторизованного пользователя?
  • Вопрос задан
  • 149 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Подскажите пожалуйста как сохранить модель Doctors как авторизованного пользователя?

1) Модели не называются во множественном числе. Модель Doctor привязывается к таблице doctors. И "я получаю модель Users," - то же самое, модель User.
2) Доктор или пациент это не пользователь, это либо роль, и тогда надо делать RBAC, либо авторизированная сущность, и тогда нужно связывать юзера и сущность через один-к-одному, в случае если доктор и пациент кардинально различаются по свойствам, а не просто имеют разные права. А пользователь просто способ авторизации/идентификации.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Shlop
@Shlop
Full Stack Developer (PHP/Laravel/JavaScript)
В дополнении к тому что написал ThunderCat если не подходит разделение по ролям, вместо связи один-к-одному я бы предложил рассмотреть варианты по поисковому запросу: multiple authentication laravel что бы могла аутентифицироваться сущность User или Doctor.
Т.к. используя вариант со связью один-к-одному предполагаю что могут быть затруднения с проверками прав в будущем в контроллерах, к примеру маршруты которые доступны только для модели Doctor
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы