Add activity logging for authentication events
This commit is contained in:
parent
5bb66a00d8
commit
0999ad7ff0
11 changed files with 179 additions and 18 deletions
40
app/Listeners/Auth/AuthenticationListener.php
Normal file
40
app/Listeners/Auth/AuthenticationListener.php
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Listeners\Auth;
|
||||
|
||||
use Pterodactyl\Facades\Activity;
|
||||
use Illuminate\Auth\Events\Login;
|
||||
use Illuminate\Auth\Events\Failed;
|
||||
use Illuminate\Contracts\Events\Dispatcher;
|
||||
use Pterodactyl\Extensions\Illuminate\Events\Contracts\SubscribesToEvents;
|
||||
|
||||
class AuthenticationListener implements SubscribesToEvents
|
||||
{
|
||||
/**
|
||||
* Handles an authentication event by logging the user and information about
|
||||
* the request.
|
||||
*
|
||||
* @param \Illuminate\Auth\Events\Login|\Illuminate\Auth\Events\Failed $event
|
||||
*/
|
||||
public function handle($event): void
|
||||
{
|
||||
$activity = Activity::withRequestMetadata();
|
||||
if ($event->user) {
|
||||
$activity = $activity->subject($event->user);
|
||||
}
|
||||
|
||||
if ($event instanceof Failed) {
|
||||
foreach ($event->credentials as $key => $value) {
|
||||
$activity = $activity->property($key, $value);
|
||||
}
|
||||
}
|
||||
|
||||
$activity->event($event instanceof Failed ? 'login.failed' : 'login.success')->log();
|
||||
}
|
||||
|
||||
public function subscribe(Dispatcher $events): void
|
||||
{
|
||||
$events->listen(Failed::class, self::class);
|
||||
$events->listen(Login::class, self::class);
|
||||
}
|
||||
}
|
25
app/Listeners/Auth/PasswordResetListener.php
Normal file
25
app/Listeners/Auth/PasswordResetListener.php
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Listeners\Auth;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Pterodactyl\Facades\Activity;
|
||||
use Illuminate\Auth\Events\PasswordReset;
|
||||
|
||||
class PasswordResetListener
|
||||
{
|
||||
protected Request $request;
|
||||
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
$this->request = $request;
|
||||
}
|
||||
|
||||
public function handle(PasswordReset $event)
|
||||
{
|
||||
Activity::event('login.password-reset')
|
||||
->withRequestMetadata()
|
||||
->subject($event->user)
|
||||
->log();
|
||||
}
|
||||
}
|
17
app/Listeners/Auth/TwoFactorListener.php
Normal file
17
app/Listeners/Auth/TwoFactorListener.php
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace Pterodactyl\Listeners\Auth;
|
||||
|
||||
use Pterodactyl\Facades\Activity;
|
||||
use Pterodactyl\Events\Auth\ProvidedAuthenticationToken;
|
||||
|
||||
class TwoFactorListener
|
||||
{
|
||||
public function handle(ProvidedAuthenticationToken $event)
|
||||
{
|
||||
Activity::event($event->recovery ? 'login.recovery-token' : 'login.token')
|
||||
->withRequestMetadata()
|
||||
->subject($event->user)
|
||||
->log();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue