Многократная аутентификация Laravel 5.1
Как вы можете аутентифицировать несколько типов пользователей в Laravel 5.1, например Соискатель, рекрутер, админ и т. Д.
Некоторые из вас предложили использовать одну таблицу пользователей для хранения только пароля и электронной почты, создать таблицы профилей для хранения информации, специфичной для пользователя (jobseeker_profile, recruiter_profile), и использовать роли для разграничения между различными типами пользователей (т. Е. Наличие ролей и role_user). Таблица.
Это все очень хорошо, но что если разные типы пользователей имеют разные формы регистрации и входа? Как настроить контроллер аутентификации по умолчанию из коробки для отображения правильного представления?
Так что, если у меня есть следующие маршруты:
// Jobseeker Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// Jobseeker Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
// Recruiter Authentication routes...
Route::get('recruiter/auth/login', 'Auth\AuthController@getLogin');
Route::post('recruiter/auth/login', 'Auth\AuthController@postLogin');
Route::get('recruiter/auth/logout', 'Auth\AuthController@getLogout');
// Recruiter Registration routes...
Route::get('recruiter/auth/register', 'Auth\AuthController@getRegister');
Route::post('recruiter/auth/register', 'Auth\AuthController@postRegister');
Это стандартный контроллер авторизации из коробки:
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers;
public function __construct()
{
$this->middleware('guest', ['except' => 'getLogout']);
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:6',
]);
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
черты, используемые по умолчанию из встроенного контроллера аутентификации:
trait AuthenticatesUsers
{
use RedirectsUsers;
public function getLogin()
{
return view('auth.login');
}
public function postLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email', 'password' => 'required',
]);
$credentials = $this->getCredentials($request);
if (Auth::attempt($credentials, $request->has('remember'))) {
return redirect()->intended($this->redirectPath());
}
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
]);
}
public function loginPath()
{
return property_exists($this, 'loginPath') ? $this->loginPath : '/auth/login';
}
}
trait RegistersUsers
{
use RedirectsUsers;
public function getRegister()
{
return view('auth.register');
}
public function postRegister(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::login($this->create($request->all()));
return redirect($this->redirectPath());
}
}
Я уверен, что это очень распространенное требование для многих веб-приложений, но я не могу найти никаких полезных руководств для конкретных реализаций Laravel. Все учебники по какой-то странной причине просто фокусируются на готовой реализации.
Любая помощь по вышеуказанному будет высоко ценится.