Вот как бы я это сделал;
Прежде всего, вам необходимо добавить столбец таблицы в файле миграции для типа пользователя и параметра входа в систему. Проверьте документацию по миграции ниже
Далее идет страница, где у вас есть форма, я не знаю, каков ваш параметр, поэтому я просто назову его «param». Я предполагаю, что вы знаете, как создавать и отправлять формы с помощью laravel, поэтому я не буду размещать здесь код.
Теперь интересная часть, контроллеры:
Так будет выглядеть мое создание пользователя в RegisterController;
Обратите внимание, что я использую стандартные контроллеры аутентификации laravel
public function createStandardUser(Request $request){
//function to add the Standard user
$user = User::create([
'name' => $request['name'],
'email' => $request['email'],
'param' => $request['login-param'],
'user-type' => 'standard'//the user type
]);
Auth::login($user);//Explicitly starts a new session for the user
return redirect('/homepage');
}
Если у вас будет другая форма для регистрации администратора, функция добавления пользователя-администратора будет примерно такой же;
public function createAdminUser(Request $request){
//function to add the Admin user
$user = User::create([
'name' => $request['name'],
'email' => $request['email'],
'param' => $request['login-param'],
'user-type' => 'admin'//the user type
]);
Auth::login($user);//Explicitly starts a new session for the user
return redirect('/adminpage');
}
- Последней частью будет LoginController, где вы можете использовать функцию
attempt()
, чтобы аутентифицировать пользователя и начать новый сеанс для него, используя ваш единственный параметр.
У вас будут эти функции
public function login(Request $request){
if(Auth::attempt(['login-param' => $request->get('login-param'])){
//we need to know who is logging in
return $this->filterAndRedirect(Auth::user());
}
}
private function filterAndRedirect(User $user){
//the function to take care of the routing
if($user->user-type == 'standard'){
return redirect('/homepage');
}else if($user->user-type == 'admin'){
return redirect('/adminpage');
}
}
Соответствующая документация: Документы по миграции баз данных , Документы по аутентификации Laravel
Предложение: на вашем месте я бы использовал роли / разрешения, а не строку таблицы в вашей БД, я думаю, что она более надежна. Проверьте эту библиотеку, она хорошо документирована и обновляется -> Laravel Permission By Spatie
РЕДАКТИРОВАТЬ: В этом ответе предполагается, что вы используете стандартную модель пользователя и контроллеры аутентификации, потому что в этом весь смысл использования инфраструктуры, не так ли?