summaryrefslogtreecommitdiff
path: root/src/HasAuthLogs.php
blob: 543b5801260d76b647df231bf9ec6eb53d344bac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php

namespace Lightscale\LaralightAuthLog;

use Lightscale\LaralightAuthLog\Models\AuthLog;
use Lightscale\LaralightAuthLog\Enums\Status;

use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Casts\Attribute;

use DateTimeInterface;

trait HasAuthLogs
{

    public function authLogs(): HasMany
    {
        return $this->hasMany(AuthLog::class)
            ->orderBy('created_at', 'desc');
    }

    public function successfulAuthLogs(): HasMany
    {
        return $this->authLogs()
            ->where('status', Status::LoginSuccess);
    }

    public function successfulAuthLog(): HasOne
    {
        return $this->successfulAuthLogs()->one();
    }

    public function lastLogin(): Attribute
    {
        return Attribute::get(
            fn(): ?DateTimeInterface => $this->successfulAuthLog?->created_at
        );
    }

}