Как отследить аутентификацию в Laravel с помощью сателлитера

Я хотел бы посчитать, сколько раз пользователь вошел в систему с помощью событий в Laravel.

Я пользуюсь сторонней библиотекойsatellizer‘для аутентификации, и я определил AuthLoginEventHandler, который выглядит следующим образом:

<?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');
}

}

В AuthenticationController у меня есть:

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'));
}

Проблема в том, что метод handle () никогда не вызывается, когда я запускаю событие из функции authenticate () внутри AuthenticationController.

Я вижу, что вызывается конструктор, но не функция дескриптора. Чего мне здесь не хватает, и есть ли какой-то другой способ, которым я мог бы достичь такой цели!

Спасибо

1

Решение

Я изменил функцию authentication () на эту, и она работает:

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'));
}

И теперь счетчик работает, так что я могу отслеживать логины пользователей, как вы думаете, ребята, это какое-то решение? Мне кажется, работает нормально, почему мы используем события, когда мы можем сделать это просто?

Я хотел бы услышать, есть ли у кого-нибудь лучшее решение для этого

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]