2017-12-28 71 views
5

laravel multi auth 대신 관리자 사용자가 내 자신의 (원시) 메서드를 사용하고 있습니다.사용자 지정 관리 테이블을 사용하여 관리 페이지로 리디렉션하는 방법

나는 데이터베이스에 PAdmin이라는 추가 테이블을 가지고 있는데,이 테이블에는 관리자의 ID가 있습니다.

응용 프로그램에 로그인 할 때 관리자 사용자를 home 페이지가 아닌 다른 페이지로 리디렉션하고 싶습니다.

public function handle($request, Closure $next, $guard = null) 
{ 

    if (Auth::guard($guard)->check()) { 
    return redirect('/home'); 

} 

return $next($request); 


} 

내가이 그것을 변경 :이에서 그래서 그 이유로

, 나는 HTTP를 \ 미들웨어 \ RedirectIfAuthenticated에 가서 코드를 변경

public function handle($request, Closure $next, $guard = null) 
{ 

    $user_id = Auth::id(); 


    $isAdmin = PAdmin::where('user_id',$user_id)->get()->isEmpty();//returns 'true' if empty 

    if (Auth::guard($guard)->check() && $isAdmin) {//IF $isAdmin is TRUE it means that the user is not admin 

     return redirect('/home'); 
    }elseif (Auth::guard($guard)->check() && !($isAdmin)){//IF $isAdmin is FALSE it means that the user is not admin 

     return redirect('/admin'); 
    } 

    return $next($request); 
} 

아이디어는 간단합니다 - 경우 PAdmin 테이블의 사용자 ID가 $isAdmin 인 레코드가 거짓이며 elseif이 실행됩니다.

불행히도 이것은 작동하지 않으며 이유를 알지 못합니다.

어쩌면 이것이 올바른 방법이 아닐지도 모릅니다.

누군가 내가이 권리를 얻을 수 있도록 도와 줄 수 있습니까?

P. multi auth을 사용하고 싶지 않습니다.

+0

-> get() 데이터를 먼저 확인하십시오. – jjwdesign

+0

"$ isAdmin이 TRUE이면 사용자가 관리자가 아님을 의미합니다." –

답변

3
public function handle($request, Closure $next, $guard = null) 
{ 

    if (Auth::guard($guard)->check()) { 
    if(PAdmin::where('user_id',Auth::id())->first() != null) return redirect('/admin'); 
    return redirect('/home'); 

} 

return $next($request); 


} 

더 명확하고 쉽습니다.