2016-08-02 3 views
1

나는() (인증 :: 사용자 -> 역할 == "XXXX")의 경우를 물어 보면 CandidateEvent 표시 내부Laravel-Event : 이벤트에서 Auth :: user()를 사용하는 방법?

문제 "가 아닌 객체의 속성을 얻기 위해 노력"되는 구성 요소 인증 : 사용자() 내 이벤트에서 작동하지 않습니다.

이벤트 내에서 인증을 사용하는 올바른 방법은 무엇입니까?

public function __construct() 
{ 
    if(Auth::user()->role == "XXXX") 
    { 
     $candidate = count(Candidate::CountNewCandidate()); 
    } 
    else 
    { 
     $candidate = count(Candidate::CountNewCandidateGroup()); 
    } 
    $this->data = [ 'cCandidate' => $candidate ];   
} 
+0

코드 이미지는 좋지 않습니다. 귀하의 질문을 다시 포맷하십시오. –

+0

죄송합니다, 새로운 항목입니다. 그리고 지금? (이벤트 코드) –

+0

사용자를 데이터의 이벤트에 전달합니다. – ceejayoz

답변

3

에 추가해야합니다, 그래서 Auth::user()->roleTrying to get property of non-object 올릴 것이다;

public function __construct() 
{ 
    if(auth()->check() && auth()->user()->role == "XXXX") 
    { 
     $candidate = count(Candidate::CountNewCandidate()); 
    } 
    else 
    { 
     $candidate = count(Candidate::CountNewCandidateGroup()); 
    } 
    $this->data = [ 'cCandidate' => $candidate ];   
} 

주 : 다음 역할을 확인할 수 있습니다 Auth::check()를 사용하여 인증 된 사용자가 있는지 확인하려고 내가 도우미 함수 auth()을 사용했다.

이 정보가 도움이되기를 바랍니다.

+0

문제는 구성 요소 Auth :: user()가 내 이벤트에서 작동하지 않고 "Illuminate \ Support \ Facades \ Auth"를 사용하고 있다는 것입니다. –

+0

도우미'auth()','auth() -> user()'를 사용하려고합니까? –

0

인증 외관의 네임 스페이스를 가져 오지 않은 것 같습니다. 당신은 null을 반환에는 인증 된 사용자 Auth::user()가없는 경우 선언

use Illuminate\Support\Facades\Auth; 
+0

"Illuminate \ Support \ Facades \ Auth"를 사용하고 있습니다. –

0

제가 그것이 라우트 데이터를 통해, 이벤트를 사용자에게 전달 풀 :

Route::group(['middleware' => ['xxxx']], function() { 
    event(new NameEvent($data)); 
    Route::auth(); 
}); 
0

이유 인증 :: 사용자() 널을 (그것이 대기 특히 경우) 이벤트에서 때문에 거기 사용자가 없습니다. 인증 데이터는 일반적으로 세션에 저장되며 짝수 세션이 트리거되면 세션 변수가 없으므로 세션 데이터가 없습니다.

\Auth::attempt(['email', $event->performedBy()->email]); 

내 응용 프로그램이 단단히 인증과 함께 많은 기능을 가지고 있기 때문에이 필요했다 : 그때 내가 부를 것이다 이벤트 핸들러 내에서 사용자를 인증하는 경우에 사용자에 통과 한 과거

(UserInterface 대신). 이상적으로 나는 의존성 (dependency)으로서 사용자에게 전달할 수 있었다.