2016-12-28 4 views
0

Я использую Laravel 5.3 и Auth по умолчанию с this roles package. Как я могу выполнить обычное перенаправление пользователей после логин пользователя если у меня есть аналогичные роли, а также страницы для них. Например, у меня есть AdminRole и после Войти Я хочу перенаправить пользователя на /admin/dashboard.Перенаправление пользователя на определенную страницу

Я пытался что-то подобное в LoginController, но это не имеет смысла:

protected function redirectTo() 
{ 
    if (Auth::user()->isRole('admin')) 
     return redirect()->route('admin'); 

    return redirect()->route('home'); 
} 

Или, может быть, есть лучший способ использовать middleware для перенаправления?

Вот мои маршруты (web.php):

Route::get('/', function() { 
    return view('welcome'); 
}); 

Auth::routes(); 

Route::get('/home', '[email protected]'); 

Route::resource('company', 'CompanyController'); 

Route::group(['prefix' => 'admin'], function() { 


    Route::get('login', function() { 
     return view('admin.pages.admin-login'); 
    }); 


    Route::group(['middleware' => 'role:admin'], function() { 
     Route::get('/', function() { 
      return view('admin.admin-main'); 
     }); 
    }); 

}); 
+0

показать маршрут часть –

+0

где находится ваш пост Логин, вы можете установить маршрут postlogin в RedirectTo() –

+0

@KrisRoofe 'Auth :: routes();' Это все маршруты для входа, регистрации и т. Д. – pwnz22

ответ

0

использовать его как таким образом:

return Redirect::to('admin'); 

И обратите внимание, что:

маршрут: Route::get('company', '[email protected]');

контроллер: это отлично работает:

function show(){ 
    return Redirect::to('home'); 
} 

, но это не

function show(){ 
    $this->redirectto(); 
} 

function redirectto() 
{ 
    return Redirect::to('home'); 
} 
+0

Я использовал его в методе 'redirectTo', не работает. – pwnz22

+0

- это ваш redirectTo функции маршрута –

+0

Ок, я думаю, нет, вы не можете так использовать. вы должны поместить функцию перенаправления :: в функцию маршрута. –

0

route.php

Route::get('home', ['as' => 'admin_home', 'uses' => '[email protected]']); 
Route::get('login'['as'=>'admin_login','uses'=>'[email protected]_login']); 

LoginController.php

use Illuminate\Support\Facades\Redirect; 

public function index(){ 
    $User=new User(); 

    if(isset(AUTH::user()->id)){ 
     $User->id=AUTH::user()->id; 
     $auth_user_role=$User->auth_user_role(); 
     $rl_title=$auth_user_role[0]->rl_title; 

     if(isset(Auth::user()->id) && isset($rl_title) && $rl_title == 'Admin'){ 
      return view('home.admin',$this->param); 
     } 
     else if(isset(Auth::user()->id) && isset($rl_title) && $rl_title == 'Moderator'){ 
      return view('home.moderator',$this->param); 
     } 
     else{ 
      return Redirect::route('admin_login'); 
     } 
    }else{ 
     return Redirect::route('admin_login'); 
    } 
} 

Просмотров

-> views 
    -> home 
     -> admin.blade.php 
     -> member.blade.php 
0

мне нужно сделать что-то подобное в Auth/LoginController:

protected function authenticated() 
{ 
    if(Auth::user()->isRole('admin')) { 
     return redirect()->intended('/admin'); 
    } 

    return redirect()->intended('/home'); 
}