ManagerGlobalTokenTrait   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 109
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 9
eloc 17
c 4
b 0
f 0
dl 0
loc 109
ccs 0
cts 20
cp 0
rs 10

7 Methods

Rating   Name   Duplication   Size   Complexity  
A prolongationGlobalToken() 0 3 1
A deactivationGlobalToken() 0 3 1
A deleteGlobalTokenById() 0 3 1
A prolongationGlobalTokenById() 0 3 1
A deleteGlobalToken() 0 3 1
A deactivationGlobalTokenById() 0 3 1
A createGlobalToken() 0 14 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Garbuzivan\Laraveltokens\Traits;
6
7
use DateTime;
8
use Garbuzivan\Laraveltokens\Config;
9
use Garbuzivan\Laraveltokens\Interfaces\GlobalTokenRepositoryInterface;
10
use Garbuzivan\Laraveltokens\Models\GlobalToken;
11
12
trait ManagerGlobalTokenTrait
13
{
14
    /**
15
     * @var Config $config
16
     */
17
    protected Config $config;
18
19
    /**
20
     * @var GlobalTokenRepositoryInterface
21
     */
22
    protected GlobalTokenRepositoryInterface $globalTokenRepository;
23
24
    /**
25
     * Создать токен
26
     *
27
     * @param string        $title      - заголовок токена
28
     * @param DateTime|null $expiration - до когда действует токен, null - бессрочно
29
     * @param string|null   $token      - токен, null == автоматическая генерация токена
30
     *
31
     * @return GlobalToken
32
     */
33
    public function createGlobalToken(
34
        string    $title,
35
        ?DateTime $expiration = null,
36
        ?string   $token = null
37
    ): GlobalToken {
38
        $token = is_null($token) || mb_strlen($token) < 32 ?
39
            $this->/** @scrutinizer ignore-call */ generateToken() : $token;
40
        $tokenDB = $this->globalTokenRepository->createGlobalToken(
41
            $title,
42
            $expiration,
43
            $this->/** @scrutinizer ignore-call */ getTokenDb($token)
44
        );
45
        $tokenDB->token = $token;
46
        return $tokenDB;
47
    }
48
49
    /**
50
     * Удалить токен по ID токена
51
     *
52
     * @param int $token_id - ID токена
53
     *
54
     * @return bool
55
     */
56
    public function deleteGlobalTokenById(int $token_id): bool
57
    {
58
        return $this->globalTokenRepository->deleteGlobalTokenById($token_id);
59
    }
60
61
    /**
62
     * Удалить токен
63
     *
64
     * @param string $token
65
     *
66
     * @return bool
67
     */
68
    public function deleteGlobalToken(string $token): bool
69
    {
70
        return $this->globalTokenRepository->deleteGlobalToken($token);
71
    }
72
73
    /**
74
     * Деактивировать токен (прекратить срок действия токена) по ID токена
75
     *
76
     * @param int $token_id - ID токена
77
     *
78
     * @return bool
79
     */
80
    public function deactivationGlobalTokenById(int $token_id): bool
81
    {
82
        return $this->globalTokenRepository->deactivationGlobalTokenById($token_id);
83
    }
84
85
    /**
86
     * Деактивировать токен (прекратить срок действия токена) по токену
87
     *
88
     * @param string $token
89
     *
90
     * @return bool
91
     */
92
    public function deactivationGlobalToken(string $token): bool
93
    {
94
        return $this->globalTokenRepository->deactivationGlobalToken($token);
95
    }
96
97
    /**
98
     * Продлить срок действия токена по id токена
99
     *
100
     * @param int           $token_id
101
     * @param DateTime|null $expiration
102
     *
103
     * @return bool
104
     */
105
    public function prolongationGlobalTokenById(int $token_id, ?DateTime $expiration = null): bool
106
    {
107
        return $this->globalTokenRepository->prolongationGlobalTokenById($token_id, $expiration);
108
    }
109
110
    /**
111
     * Продлить срок действия токена по токену
112
     *
113
     * @param string        $token
114
     * @param DateTime|null $expiration
115
     *
116
     * @return bool
117
     */
118
    public function prolongationGlobalToken(string $token, ?DateTime $expiration = null): bool
119
    {
120
        return $this->globalTokenRepository->prolongationGlobalToken($token, $expiration);
121
    }
122
}
123