Add missing auth activity logs (#1372)

This commit is contained in:
Boy132 2025-05-19 09:12:58 +02:00 committed by GitHub
parent 7034c4d013
commit 258c97bf14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 20 additions and 38 deletions

View File

@ -1,11 +0,0 @@
<?php
namespace App\Events\Auth;
use App\Models\User;
use App\Events\Event;
class DirectLogin extends Event
{
public function __construct(public User $user, public bool $remember) {}
}

View File

@ -1,16 +0,0 @@
<?php
namespace App\Events\Auth;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
class FailedPasswordReset extends Event
{
use SerializesModels;
/**
* Create a new event instance.
*/
public function __construct(public string $ip, public string $email) {}
}

View File

@ -288,6 +288,8 @@ class EditProfile extends BaseEditProfile
); );
Activity::event('user:api-key.create') Activity::event('user:api-key.create')
->actor($user)
->subject($user)
->subject($token->accessToken) ->subject($token->accessToken)
->property('identifier', $token->accessToken->identifier) ->property('identifier', $token->accessToken->identifier)
->log(); ->log();

View File

@ -2,8 +2,10 @@
namespace App\Filament\Pages\Auth; namespace App\Filament\Pages\Auth;
use App\Events\Auth\ProvidedAuthenticationToken;
use App\Extensions\Captcha\Providers\CaptchaProvider; use App\Extensions\Captcha\Providers\CaptchaProvider;
use App\Extensions\OAuth\Providers\OAuthProvider; use App\Extensions\OAuth\Providers\OAuthProvider;
use App\Facades\Activity;
use App\Models\User; use App\Models\User;
use Filament\Facades\Filament; use Filament\Facades\Filament;
use Filament\Forms\Components\Actions; use Filament\Forms\Components\Actions;
@ -54,6 +56,11 @@ class Login extends BaseLogin
if ($token === null) { if ($token === null) {
$this->verifyTwoFactor = true; $this->verifyTwoFactor = true;
Activity::event('auth:checkpoint')
->withRequestMetadata()
->subject($user)
->log();
return null; return null;
} }
@ -64,11 +71,18 @@ class Login extends BaseLogin
$token, $token,
Config::integer('panel.auth.2fa.window'), Config::integer('panel.auth.2fa.window'),
); );
if ($isValidToken) {
event(new ProvidedAuthenticationToken($user));
}
} else { } else {
foreach ($user->recoveryTokens as $recoveryToken) { foreach ($user->recoveryTokens as $recoveryToken) {
if (password_verify($token, $recoveryToken->token)) { if (password_verify($token, $recoveryToken->token)) {
$isValidToken = true; $isValidToken = true;
$recoveryToken->delete(); $recoveryToken->delete();
event(new ProvidedAuthenticationToken($user, true));
break; break;
} }
} }

View File

@ -4,7 +4,7 @@ namespace App\Listeners\Auth;
use App\Facades\Activity; use App\Facades\Activity;
use Illuminate\Auth\Events\Failed; use Illuminate\Auth\Events\Failed;
use App\Events\Auth\DirectLogin; use Illuminate\Auth\Events\Login;
class AuthenticationListener class AuthenticationListener
{ {
@ -12,9 +12,10 @@ class AuthenticationListener
* Handles an authentication event by logging the user and information about * Handles an authentication event by logging the user and information about
* the request. * the request.
*/ */
public function handle(Failed|DirectLogin $event): void public function handle(Failed|Login $event): void
{ {
$activity = Activity::withRequestMetadata(); $activity = Activity::withRequestMetadata();
if ($event->user) { if ($event->user) {
$activity = $activity->subject($event->user); $activity = $activity->subject($event->user);
} }

View File

@ -2,22 +2,14 @@
namespace App\Listeners\Auth; namespace App\Listeners\Auth;
use Illuminate\Http\Request;
use App\Facades\Activity; use App\Facades\Activity;
use Illuminate\Auth\Events\PasswordReset; use Illuminate\Auth\Events\PasswordReset;
class PasswordResetListener class PasswordResetListener
{ {
protected Request $request;
public function __construct(Request $request)
{
$this->request = $request;
}
public function handle(PasswordReset $event): void public function handle(PasswordReset $event): void
{ {
Activity::event('event:password-reset') Activity::event('auth:password-reset')
->withRequestMetadata() ->withRequestMetadata()
->subject($event->user) ->subject($event->user)
->log(); ->log();