Auth::isLogged()   A
last analyzed

Complexity

Conditions 5
Paths 4

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 15
rs 9.4555
c 0
b 0
f 0
cc 5
nc 4
nop 0
1
<?php
2
3
namespace Egzaminer;
4
5
class Auth
6
{
7
    /**
8
     * @var array
9
     */
10
    private $users;
11
12
    /**
13
     * @var array[]
14
     */
15
    private $request;
16
17
    public function __construct(array $users, array $request)
18
    {
19
        $this->users = $users;
20
        $this->request = $request;
21
    }
22
23
    public function login(string $login, string $password): bool
24
    {
25
        foreach ($this->users as $user) {
26
            if ($login === $user['login'] && password_verify($password, $user['pass_hash'])) {
27
                $this->request['session']['egzaminer_auth_un'] = $user['login'];
28
                $this->request['session']['ga_cookie'] = password_hash($user['login'], PASSWORD_DEFAULT);
29
30
                return true;
31
            }
32
        }
33
34
        return false;
35
    }
36
37
    public function isLogged(): bool
38
    {
39
        if (!isset($this->request['session']['ga_cookie'])) {
40
            return false;
41
        }
42
43
        foreach ($this->users as $user) {
44
            if ($this->request['session']['egzaminer_auth_un'] === $user['login']
45
                && password_verify($user['login'], $this->request['session']['ga_cookie'])) {
46
                return true;
47
            }
48
        }
49
50
        return false;
51
    }
52
53
    public function logout(): bool
54
    {
55
        $this->request['session']['egzaminer_auth_un'] = false;
56
        $this->request['session']['ga_cookie'] = false;
57
58
        return session_destroy();
59
    }
60
}
61