Passed
Push — master ( 62cbf8...9454ef )
by Evgeniy
04:00
created

Identity::shouldLoginByCookie()   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 1
Metric Value
cc 1
eloc 1
c 1
b 0
f 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Auth;
6
7
use App\User\User;
8
use Cycle\Annotated\Annotation\Column;
9
use Cycle\Annotated\Annotation\Entity;
10
use Cycle\Annotated\Annotation\Relation\BelongsTo;
11
use Yiisoft\Security\Random;
12
use Yiisoft\User\Login\Cookie\CookieLoginIdentityInterface;
13
14
/**
15
 * @Entity(repository="App\Auth\IdentityRepository")
16
 */
17
final class Identity implements CookieLoginIdentityInterface
18
{
19
    /**
20
     * @Column(type="primary")
21
     */
22
    private ?int $id = null;
0 ignored issues
show
introduced by
The private property $id is not used, and could be removed.
Loading history...
23
24
    /**
25
     * @Column(type="string(32)")
26
     */
27
    private string $authKey;
28
29
    /**
30
     * @BelongsTo(target="App\User\User", nullable=false, load="eager")
31
     *
32
     * @var \Cycle\ORM\Promise\Reference|User
33
     */
34
    private $user = null;
35
    private ?int $user_id = null;
0 ignored issues
show
introduced by
The private property $user_id is not used, and could be removed.
Loading history...
36
    private bool $shouldAddCookie = false;
37
38
    public function __construct()
39
    {
40
        $this->regenerateCookieLoginKey();
41
    }
42
43
    public function getId(): ?string
44
    {
45
        return $this->user->getId();
0 ignored issues
show
Bug introduced by
The method getId() does not exist on Cycle\ORM\Promise\Reference. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

45
        return $this->user->/** @scrutinizer ignore-call */ getId();

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
46
    }
47
48
    public function getCookieLoginKey(): string
49
    {
50
        return $this->authKey;
51
    }
52
53
    public function getUser(): ?User
54
    {
55
        return $this->user;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->user could return the type Cycle\ORM\Promise\Reference which is incompatible with the type-hinted return App\User\User|null. Consider adding an additional type-check to rule them out.
Loading history...
56
    }
57
58
    public function shouldLoginByCookie(): bool
59
    {
60
        return $this->shouldAddCookie;
61
    }
62
63
    public function setShouldLoginByCookie(bool $value): void
64
    {
65
        $this->shouldAddCookie = $value;
66
    }
67
68
    public function validateCookieLoginKey(string $key): bool
69
    {
70
        return $this->authKey === $key;
71
    }
72
73
    public function regenerateCookieLoginKey(): void
74
    {
75
        $this->authKey = Random::string(32);
76
    }
77
}
78