Laravel промежуточное перенаправление входа в систему - PullRequest
0 голосов
/ 22 февраля 2020

как создать промежуточный редирект о роли. У меня есть 2 промежуточного ПО, первый администратор, следующий пользователь. Необходимо перенаправить после входа в систему, если роль администратора, например, перенаправление на / admin, если пользователь перенаправляет на /user.

Промежуточное ПО администратора:

if(Auth::check() && Auth::user()->isRole() == "Admin"){
        return $next($request);
    }
    return redirect('login');

Промежуточное ПО пользователя:

 if(Auth::check() && Auth::user()->isRole() == "User"){
        return $next($request);
    }
    return redirect('login');

ВЕБ-маршруты

Route::group(['middleware' => ['auth']], function () {
Route::get('/', 'DashboardController@index');

Route::group(['middleware' => ['auth' => 'admin']], function (){
    Route::resource('/admin', 'AdminController');
});

Route::group(['middleware' => ['auth' => 'user']], function (){
    Route::resource('/user', 'AdminController');
});

});

Ответы [ 2 ]

0 голосов
/ 23 февраля 2020
// Admin Middleware

  public function handle($request, Closure $next)
    {
      if(Auth::check() && Auth::user()->role->id == 1)
      {
        return $next($request);
      }else {
        return redirect()->route('login');
      }

    }

// User Middleware

  public function handle($request, Closure $next)
    {
      if(Auth::check() && Auth::user()->role->id == 2 )
      {
        return $next($request);
      }else {
        return redirect()->route('login');
      }

    }

// Admin Route Group
Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'Admin','middleware'=>['auth','admin']], function (){
    Route::get('dashboard','DashboardController@index')->name('dashboard');

})
// User Middleware
Route::group(['as'=>'user.','prefix'=>'user','namespace'=>'Author','middleware'=>['auth','user']], function (){
    Route::get('dashboard','DashboardController@index')->name('dashboard');

});
0 голосов
/ 22 февраля 2020

Вы можете заставить ваше промежуточное ПО администратора / пользователя наследовать промежуточное ПО аутентификации laravel: Illuminate\Auth\Middleware\Authenticate, затем иметь их определения, как показано ниже.

Промежуточное ПО администратора -

public function handle($request, Closure $next, ...$guards)
    // Ensure auth - this will automagically re-direct if not authed.
    $this->authenticate($request, $guards);
    if(Auth::user()->isRole() == "Admin")
        return $next($request);
    return redirect('/user-default-page')
}

// You can define this for your un-authenticated redirects
protected function redirectTo($request)
{
    return '/login';
}

В этом случае промежуточное ПО пользователя будет: -

public function handle($request, Closure $next, ...$guards)
    // Ensure auth - this will automagically re-direct if not authed.
    $this->authenticate($request, $guards);
    if(Auth::user()->isRole() == "User")
        return $next($request);
    return redirect('/admin-default-page')
}

// You can define this for your un-authenticated redirects
protected function redirectTo($request)
{
    return '/login';
}

Для маршрутов:

Route::group(['middleware' => 'admin'], function () {
    // Put here admin routes, e.g
    Route::resource('/admin', 'AdminController');
}
Route::group(['middleware' => 'user'], function () {
    // Put here user routes, e.g
    Route::resource('/users', 'UserController');
}

// You can still use the default auth routes, say for routes that (somehow), both admin and user can access
Route::group(['middleware' => 'auth'], function () {
    Route::resource('/dashboard', 'DashboardController');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...