2016-08-24 3 views
1

Laravel의 이벤트를 사용하여 사용자가 로그인 한 횟수를 계산하고 싶습니다.satellizer를 사용하여 Laravel에서 인증을 추적하는 방법

나는 ' satellizer '인증을 위해 타사 라이브러리를 사용하고, 나는 다음과 같이 보이는 AuthLoginEventHandler을 정의했습니다 : AuthenticationController에서

<?php namespace App\Handlers\Events; 

use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldBeQueued; 
use App\User; 
use Illuminate\Support\Facades\Log; 

class AuthLoginEventHandler { 

    /** 
    * Create the event handler. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     Log::info('Logged in User is working from constructor'); 
    } 

    /** 
    * Handle the event. 
    * 
    * @param User $user 
    * @param $remember 
    * @return void 
    */ 
    public function handle(User $user, $remember) 
    { 
     Log::info('Logged in'); 

     $user->login_counter = 1; 
     $user->save(); 
     $user->increment('login_counter'); 
    } 

} 

나는이 :

public function authenticate(Request $request) 
{ 
    $credentials = $request->only('email', 'password'); 

    try { 
     // verify the credentials and create a token for the user 
     if (! $token = JWTAuth::attempt($credentials)) { 
      return response()->json(['error' => 'invalid_credentials','status'=>false], 401); 
     } 
    } catch (JWTException $e) { 
     // something went wrong 
     return response()->json(['error' => 'could_not_create_token','status'=>false], 500); 
    } 

    Log::info('Logged in User from JWT'); 
    Event::fire(new AuthLoginEventHandler()); 
    // if no errors are encountered we can return a JWT 
    return response()->json(compact('token')); 
} 

문제 AuthenticationController 내부의 authenticate() 함수에서 이벤트를 발생시킬 때 handle() 메서드가 호출되지 않습니다.

나는 생성자가 호출되고 있지만 핸들 함수가 아니라는 것을 알 수있다. 내가 무엇을 놓치고 있는지, 그리고 내가 그런 것을 얻을 수있는 다른 방법이 있는가!

감사합니다 이것에

답변

0

내가 변경 않았다 인증() 함수가 작동됩니다 : 당신은 사람을 생각하는 것이 무엇

public function authenticate(Request $request) 
{ 
    $credentials = $request->only('email', 'password'); 

    try { 
     // verify the credentials and create a token for the user 
     if (! $token = JWTAuth::attempt($credentials)) { 
      return response()->json(['error' => 'invalid_credentials','status'=>false], 401); 
     } 
    } catch (JWTException $e) { 
     // something went wrong 
     return response()->json(['error' => 'could_not_create_token','status'=>false], 500); 
    } 

    $user = Auth::user(); 
    $user->increment('login_counter'); 
    $user->update(); 

    // if no errors are encountered we can return a JWT 
    return response()->json(compact('token')); 
} 

이제 카운터가 작동, 그래서 사용자 로그인을 추적 할 수 있습니다, , 이것은 어떤 종류의 해결책입니까? 나를 위해 잘 작동하는 것, 왜 우리는이 간단한 일을 할 때 이벤트를 사용하고 있습니까?

더 나은 해결책이 있다면 누구나 듣고 싶습니다.