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
        );
    }
}
 |