diff options
| -rw-r--r-- | src/AuthSubscriber.php | 48 | 
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', +        ]; +    } +} | 
