2016-08-02 9 views
1

CandidateEvent内の(Auth :: user() - > role == "xxxx")が「非オブジェクトのプロパティを取得しようとしています」と表示されたらLaravel-Event:イベントでAuth :: user()を使用するには?

問題はコンポーネント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

Authファサードの名前空間をインポートしていないようです。あなたは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ではなく)。理想的には、私は依存関係としてユーザーを渡した可能性があります。

関連する問題