Многократная аутентификация 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. Все учебники по какой-то странной причине просто фокусируются на готовой реализации.

Любая помощь по вышеуказанному будет высоко ценится.

Ответы на вопрос(5)

Ваш ответ на вопрос