Рекомендации по аутентификации

У меня есть веб-сайт Laravel с таблицей «пользователи», в которой хранится role_id, и таблицей «компании», в которой хранятся пользовательские постоянные ссылки. Маршруты входа по умолчанию используются для пользователей с ролью ADMIN. Мне нужно добавить другие представления и маршруты для пользователей с ролью КЛИЕНТ. Таким образом, когда пользователь получает доступ к URL-адресу '/custom-company-permalink-from-db' и не вошел в систему, он должен быть перенаправлен на URL-адрес '/custom-company- постоянная ссылка-из-БД/логин '.

Вот мои маршруты:

Route::middleware('web')->group(function() {
    Auth::routes(['register' => false]);

    Route::get('/', ['uses' => 'HomeController@index', 'as' => 'home']);
    Route::get('/{company}', ['uses' => 'HomeController@overview', 'as' => 'overview']);
});

Route::namespace('Admin')->prefix('admin')->name('admin.')->middleware(['auth', 'check.if.admin'])->group(function() {
    Route::get('/dashboard', ['as' => 'dashboard', 'uses' => 'AdminController@dashboard']);
});

Я думаю о добавлении этого к маршрутам:

Route::get('/{company?}/login','Frontend\Auth\LoginController@showLoginForm')->name('client.login');

Затем скопируйте файлы app/Http/Controllers/Auth в папку app/Http/Controllers/Frontend/Auth. и внесение необходимых правок.

Есть ли другой способ добиться этого? Какой рекомендуемый способ?


person Mihaela    schedule 19.02.2020    source источник
comment
Есть простые подходы, я думаю, вам нужен пример того, как вы будете выполнять проверки :)   -  person mrhn    schedule 20.02.2020


Ответы (1)


Поскольку вы разделяете пользователей на основе ролей, вы можете использовать один и тот же логин и различать маршруты на основе пространства имен. Внутри группы авторизации создайте две группы: одну для администратора (существующую) и одну для клиентов. Вы уже используете промежуточное программное обеспечение, чтобы проверить, является ли пользователь администратором. Точно так же вы можете создать новое промежуточное ПО, чтобы проверить, является ли пользователь клиентом.

 Route::middleware('auth')->group....
    Route::namspace..prefix..->middleware('check.if.admin')->group(...
    ) //end check if admin group
    Route::namespace('client')->prefix('client')->middleware('check.client')->group(...)
 )//end auth group
person Community    schedule 20.02.2020