Laravel множественная аутентификация с двух разных маршрутов и просмотра - PullRequest
0 голосов
/ 09 мая 2020

Я хочу реализовать систему, в которой существует 6 типов пользователей. Таким образом, один из них - это «клиент», который будет входить в систему по маршруту, например /login, а остальные 5 пользователей являются администраторами, и только они будут входить в систему по другому маршруту /system/base-admin. Однако «клиент» никогда не входит в систему с маршрутом /system/base-admin, если каким-либо образом может знать этот маршрут. И оба маршрута имеют разную форму входа, и если им не удалось войти в систему, «клиент» будет перенаправлен на /login и администраторы /system/base-admin.

Я знаю о проверке $ guard и промежуточного ПО.

Вопрос: Как я могу реализовать описанный выше сценарий и как профессионалы отреагируют на этот сценарий?

Route::get('/login','CustomerLoginController@processLogin')->name('customer.login');


Route::get('/system/base-admin', 'AdminLoginController@processAdminLogin')->name('system.admin')

Мой контроллер Похоже,

public function processLogin(){ return view('customer.login');}

public function processAdminLogin(){ return view('admin.login')}

Заранее спасибо.

1 Ответ

0 голосов
/ 09 мая 2020

Единственная причина, по которой я вижу разные конечные точки для входа, - это разные представления. Скопируйте свой Auth\LoginController, измените $redirectTo для перенаправления в вашу админ панель. Замените AuthenticatesUsers\showLoginForm, чтобы отображалась форма администратора, и обновите промежуточное ПО в __construct. Защитите все свои административные маршруты с помощью промежуточного программного обеспечения администратора.

Сейчас. Ваши пользователи МОГУТ войти в вашу панель. НО ничего не произойдет, поскольку у них нет доступа.

Если вы хотите показать им какое-то сообщение, когда они попытаются, вы можете перезаписать метод AuthenticatesUsers\login примерно таким

...
if ($this->attemptLogin($request)) {
            if(!auth()->user()->isAdmin()){
               throw ValidationException::withMessages([
                 $this->username() => 'You don\'t have access to this page',
               ]);
            }
            return $this->sendLoginResponse($request);
        }
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...