Passed
Push — main ( 12e7e2...8f14aa )
by Garbuz
03:18
created

GlobalTokenRepository::getGlobalTokenById()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
ccs 0
cts 2
cp 0
rs 10
cc 1
nc 1
nop 1
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Garbuzivan\Laraveltokens\Repositories;
6
7
use Carbon\Carbon;
8
use DateTime;
9
use Garbuzivan\Laraveltokens\Interfaces\GlobalTokenRepositoryInterface;
10
use Garbuzivan\Laraveltokens\Models\GlobalToken;
11
use Illuminate\Support\Facades\DB;
12
13
class GlobalTokenRepository implements GlobalTokenRepositoryInterface
14
{
15
    /**
16
     * Создать токен
17
     *
18
     * @param string        $title      - заголовок токена
19
     * @param DateTime|null $expiration - до когда действует токен, null - бессрочно
20
     * @param string        $token      - токен
21
     *
22
     * @return GlobalToken
23
     */
24
    public function createGlobalToken(
25
        string    $title,
26
        ?DateTime $expiration = null,
27
        string    $token
28
    ): GlobalToken {
29
        return GlobalToken::create([
30
            'token'      => $token,
31
            'title'      => $title,
32
            'expiration' => $expiration,
33
        ]);
34
    }
35
36
    /**
37
     * Удалить токен по ID токена
38
     *
39
     * @param int $token_id - ID токена
40
     *
41
     * @return bool
42
     */
43
    public function deleteGlobalTokenById(int $token_id): bool
44
    {
45
        return (bool)GlobalToken::where('id', $token_id)->delete();
46
    }
47
48
    /**
49
     * Удалить токен
50
     *
51
     * @param string $token
52
     *
53
     * @return bool
54
     */
55
    public function deleteGlobalToken(string $token): bool
56
    {
57
        return (bool)GlobalToken::where('token', $token)->delete();
58
    }
59
60
    /**
61
     * Очистить таблицу токенов
62
     *
63
     * @return bool
64
     */
65
    public function deleteAllGlobalToken(): bool
66
    {
67
        DB::table('global_tokens')->truncate();
68
        return true;
69
    }
70
71
    /**
72
     * Деактивировать токен (прекратить срок действия токена) по ID токена
73
     *
74
     * @param int $token_id - ID токена
75
     *
76
     * @return bool
77
     */
78
    public function deactivationGlobalTokenById(int $token_id): bool
79
    {
80
        return (bool)GlobalToken::where('id', $token_id)->update([
81
            'expiration' => Carbon::now()->subMinutes(),
82
        ]);
83
    }
84
85
    /**
86
     * Деактивировать токен (прекратить срок действия токена) по токену
87
     *
88
     * @param string $token
89
     *
90
     * @return bool
91
     */
92
    public function deactivationGlobalToken(string $token): bool
93
    {
94
        return (bool)GlobalToken::where('token', $token)->update([
95
            'expiration' => Carbon::now()->subMinutes(),
96
        ]);
97
    }
98
99
    /**
100
     * Продлить срок действия токена по id токена
101
     *
102
     * @param int           $token_id
103
     * @param DateTime|null $expiration
104
     *
105
     * @return bool
106
     */
107
    public function prolongationGlobalTokenById(int $token_id, ?DateTime $expiration = null): bool
108
    {
109
        return (bool)GlobalToken::where('id', $token_id)->update(['expiration' => $expiration]);
110
    }
111
112
    /**
113
     * Продлить срок действия токена
114
     *
115
     * @param string        $token
116
     * @param DateTime|null $expiration
117
     *
118
     * @return bool
119
     */
120
    public function prolongationGlobalToken(string $token, ?DateTime $expiration = null): bool
121
    {
122
        return (bool)GlobalToken::where('token', $token)->update(['expiration' => $expiration]);
123
    }
124
125
    /**
126
     * Получить токен по ID
127
     *
128
     * @param int $token_id
129
     *
130
     * @return GlobalToken|null
131
     */
132
    public function getGlobalTokenById(int $token_id): ?GlobalToken
133
    {
134
        return GlobalToken::where('id', $token_id)->first();
135
    }
136
137
    /**
138
     * Получить данные о токене
139
     *
140
     * @param string $token
141
     *
142
     * @return GlobalToken|null
143
     */
144
    public function getGlobalToken(string $token): ?GlobalToken
145
    {
146
        return GlobalToken::where('token', $token)->first();
147
    }
148
149
    /**
150
     * Фиксация последней активности токена
151
     *
152
     * @param string $token
153
     *
154
     * @return bool
155
     */
156
    public function setLastUseGlobalToken(string $token): bool
157
    {
158
        return (bool)GlobalToken::where('token', $token)->update([
159
            'last_use' => Carbon::now()->subMinutes(),
160
        ]);
161
    }
162
}
163