С моим приложением laravel 5 я хочу иметь как администраторов, так и клиентов. В прошлом я использовал таблицу user для обоих, и имел флаг, какой тип пользователя это был — с таблицей соединений для получения дополнительной информации о клиенте.
Я нашел этот подход довольно беспорядочным … и думаю, что было бы лучше иметь и таблицу пользователей, и модель, и таблицу клиентов и модель.
Это приводит меня к моей проблеме, хотя, такие вещи, как сброс пароля аутентификации, попытка аутентификации предназначены для таблицы пользователей. Можно ли сделать так, чтобы это работало и на клиентском столе.
Это вообще возможно?
(Я пометил laravel 4, поскольку решение также может повлиять на это).
У меня была похожая проблема с несколькими пользователями в Laravel.
Я нашел multiauth
Пакет Laravel, чтобы быть очень полезным, проверьте это https://github.com/ollieread/multiauth
Документация довольно проста. Плагин в конечном итоге расширяет собственный Laravel Auth, чтобы позволить нескольким пользователям.
Позвольте мне вставить фрагмент с сайта:
Все выполняется точно так же, как и в исходной библиотеке, за исключением того, что все> вызовы методов имеют префикс с ключом (учетная запись или пользователь в приведенных выше примерах) как сам метод.
Auth::account()->attempt(array(
'email' => $attributes['email'],
'password' => $attributes['password'],
));
Auth::user()->attempt(array(
'email' => $attributes['email'],
'password' => $attributes['password'],
));
Auth::account()->check();
Auth::user()->check();
Я обнаружил, что вызов метода user () для пользовательского типа с именем user () выглядит беспорядочно, поэтому я добавил хороший метод get, чтобы обернуть его вокруг.
Auth::user()->get();
В случае, когда у вас есть пользовательский тип, который может выдавать себя за другой тип пользователя, например, будучи администратором, выдавая себя за пользователя, чтобы воссоздать или проверить что-то, я добавил метод impersonate (), который просто оборачивает loginUsingId () в пользовательский тип запроса.
Auth::admin()->impersonate('user', 1, true);
Первый аргумент — это тип пользователя, второй — идентификатор указанного пользователя, а третий — запоминать ли пользователя, который по умолчанию имеет значение false, поэтому его можно пропустить чаще, чем нет.
И так далее.
Надеюсь это поможет!
Других решений пока нет …