Как правильно определять, какой guard используется в сессии?
На сайте есть система авторизации, которая позволяет пользователю зарегистрироваться либо через сам сайт(классический ввод email, имени и пароля) или через вк. В этой связи возникла проблема: Очевидно, что если пользователь хочет войти через соцсеть, то такие поля, как, к примеру, пароль ему будут просто не нужны. Но если на сайте существует база данных с единой таблицей для пользователей, то столбец с паролем будет просто необходим для заполнения. Поэтому было решено создать отдельную базу данных для пользователей, вошедших через вк и пользователей, которые регистрировались через основную систему сайта. Соответственно и модели теперь тоже две (User и VkUser). Модель VkUser была занесена в config/auth.php как дополнительный guard. Теперь, если пользователь входит через вк, модель VkUser либо сохраняется в базу для пользователей вк, либо берется из нее если уже была создана и сохранятся при помощи функции auth('vkUser')->login($vkUser) в сессию авторизации как guard vkUser. С пользователями, которые регистрировались не через соцсеть, ситуация такая же, но залогиниваются они как гард user, т.е auth('user')->login($user). Но каким образом потом определять тип гарда, под которым пользователь залогинен? Как вариант, можно использовать банальную проверку в условиях, auth('vkUser')->check() или auth('user')->check, но если гардов будет много(в будущем добавят авторизацию через гугл, телеграм и тд), то условия будут сильно разрастаться, т.е это явно не лучший вариант. Существует ли методика определения гардов? Или мой метод авторизации не является корректным?
Такое впечатление в последнее время, что думать никто не хочет. Задают такие вопросы, что просто пипец. И если раньше я критиковал JhaoDa за его отсылки к документации, то теперь понимаю, что был не прав.
Более того, скажу - думайте башкой, читайте доки, ищите в гугле, пробуйте раз десять, а уж когда совсем не получается, пишите сюда. В девяти из десяти случаев ошибки из-за неправильно написанного кода, проверено.
И не учитесь по сраным роликам ютубе, ничего у вас не получится.
Здесь за вас никто ничего делать не будет.
На сайте есть система авторизации, которая позволяет пользователю зарегистрироваться
Это система аутентификации, надо понимать разницу.
Завтра пользователь, зареганный через основную систему, захочет привязать ВК-аккаунт. И что делать будешь? Создавать его дубль? А послезавтра добавятся Одноклассники. Заведешь третью таблицу?
Правильно:
— таблица+модель юзеров;
— таблица+модель соц. аккаунтов с мылом/токеном/аватаркой, связанная с таблицей юзеров.
Если регается через соц.сеть, то создаёшь юзера с пустым/генерируемым паролем, дальше выстраиваешь логику аутентификации.