@pemi

Как переписать аутентификацию в Laravel?

Мне нужна такая аутентификация - есть таблица с полями network, id_in_network. Мне нужно дописать для аутентификационного модуля Ларавела такой метод, который принимает $network, $idInNetwork и ищет в таблице соответствие. Если есть такой - он логинит пользователя, не находит - создает запись и тоже логинит. Как такое реализовать красиво? Без костылей и т. д. ? Папка vendor не находится под версионным контролем и редактировать ее саму не рекомендуется. Поэтому как мне тогда дописать такой метод? Где создавать файл для дописывания этого метода?
  • Вопрос задан
  • 352 просмотра
Пригласить эксперта
Ответы на вопрос 3
xpert13
@xpert13
Full Stack Developer
Где создавать файл для дописывания этого метода?

В контролере который должен отвечать за это действие. По умолчанию это LoginController, но это опционально, вы можете использовать любой контроллер.

Поэтому как мне тогда дописать такой метод?

Чтобы авторизировать пользователя нужно использовать следующий метод:
\Auth::login($user);
Где $user - это модель текущего пользователя. Проверки на существование в таблице записей и создания в случае необходимости думаю сами сделаете.

Если в качестве моделей пользователя должна выступать "таблица с полями network, id_in_network" - тогда вам еще нужно описать её в файле "config/auth.php" (ориентируйтесь на то, как это сделано для стандартной модели пользователя)
Ответ написан
Комментировать
Если я правильно понял задачу, то тебе не нужно переписывать авторизацию.
В ларавеле есть события, которые ты можешь использовать перед авторизацией пользователя.

https://laravel.com/docs/5.4/authentication#events

Тебе думаю нужно слушать событие Illuminate\Auth\Events\Attempting

Когда создашь Listener для это события, в нем, сможеш проверить что тебе нужно и залогинить пользователя.

Или использовать событие Illuminate\Auth\Events\Login, ведь ты будешь логинить пользователя в обоих случаях, а после логина уже сделаешь если надо нужные записи в базу.
Ответ написан
Комментировать
насколько я знаю с версии 5.3 контроллеры идут в коробке, и если нужно изменить условия то просто создаете authController с нужными Вам параметрами
Ответ написан
Ваш ответ на вопрос

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

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