2016-08-09 4 views
1

내 응용 프로그램에 "고스트 (ghosting)"를 도입하려고합니다. 사용자의 POV에서 우리의 응용 프로그램에 액세스 할 수 있습니다.Laravel에서 사용자를 관리자로 올바르게 인증하려면 어떻게해야합니까?

현재이 기능을 사용하려면 loginUsingID 기능을 사용하고 관리자 만 액세스 할 수있는 보호 된 경로가 있어야합니다. 그러나 나는 또한 관리자에게 앱 상단에 막대를 표시하여 사용자를 유혹한다고 표시하려고합니다.

나는 사용자 is_being_ghosted에 속성을 추가하는 생각 - ghostLogin에로, logout에 거짓 거짓 login에, 참으로 설정.

하지만 관리자가 사용자의 고스트를 시도 할 가능성이 있으며 계정에서 물건을 조사하는 동안 사용자가 페이지를 새로 고칩니다. (이미 인증되었으므로 다시 로그인해야 함). 그 경우에 그들은 정상을 가로 질러이 "admin bar"를 볼 것인데, 분명히 그렇게되기를 원하지 않을 것입니다.

여기에서 내가하려는 것을 달성하는 효율적인 방법이 있습니까? 내가 잘못된 방향으로가는거야?

+3

사용자가 아닌 세션에서 'is_being_ghosted'를 설정하십시오. 세션은 관리자에게만 적용됩니다. – jszobody

답변

0

jszobody이 언급되었다. 세션 내에서 상태를 관리 할 수 ​​있습니다. /ghost 경로를 확보 한 다음 original-user-id 세션이 설정되면 막대와 unghost 링크가 표시됩니다.

public function ghost(Request $request, $id) 
{ 
    $request->session()->put('original-user-id', Auth::user()->id); 

    Auth::loginUsingId($id); 

    return redirect('/'); 
} 

public function unghost(Request $request) 
{ 
    if ($request->session()->has('original-user-id')) { 
     Auth::loginUsingId($request->session()->pull('original-user-id')); 
    } 

    return redirect('/'); 
} 

업데이트 :

ghost 엔드 포인트는 기본적으로 당신이 가장 원하는 id을 받아, 일반적으로 아약스 검색 입력 또는 유사한 무언가를 발견했다. 어떤 경우이든 사용 사례를 결정합니다.

관련 문제