summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSam Light <samlight1994@gmail.com>2025-04-10 00:40:03 +0100
committerSam Light <samlight1994@gmail.com>2025-04-10 00:40:03 +0100
commit35a5ec6c119c5acc8f25997187affd228d680ffb (patch)
tree07dc7e0adbbbe609fc75f50eabdb2fe42b953b50 /src
parent704e4c63dcf449641c5b98dc5433958554b96a91 (diff)
Created AuthSubscriber to listener to auth events and log them
Diffstat (limited to 'src')
-rw-r--r--src/AuthSubscriber.php48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/AuthSubscriber.php b/src/AuthSubscriber.php
new file mode 100644
index 0000000..6d4cc63
--- /dev/null
+++ b/src/AuthSubscriber.php
@@ -0,0 +1,48 @@
+<?php
+
+namespace Lightscale\LaralightAuthLog;
+
+use Lightscale\LaralightAuthLog\Models\AuthLog;
+use Lightscale\LaralightAuthLog\Enums\Status;
+
+use Illuminate\Auth\Events\Login;
+use Illuminate\Auth\Events\Failed;
+use Illuminate\Auth\Events\Logout;
+use Illuminate\Events\Dispatcher;
+
+class AuthSubscriber
+{
+
+ private function handleEvent(Status $status, mixed $event): void
+ {
+ $log = new AuthLog([
+ 'status' => $status,
+ ]);
+ $log->user()->associate($event->user);
+ $log->save();
+ }
+
+ public function handleLogin(Login $event): void
+ {
+ $this->handleEvent(Status::LoginSuccess, $event);
+ }
+
+ public function handleFailed(Failed $event): void
+ {
+ $this->handleEvent(Status::LoginFailure, $event);
+ }
+
+ public function handleLogout(Logout $event): void
+ {
+ $this->handleEvent(Status::Logout, $event);
+ }
+
+ public function subscribe(Dispatcher $events): array
+ {
+ return [
+ Login::class => 'handleLogin',
+ Failed::class => 'handleFailed',
+ Logout::class => 'handleLogout',
+ ];
+ }
+}