Auth   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 11
c 0
b 0
f 0
lcom 1
cbo 0
dl 0
loc 56
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A login() 0 13 4
A isLogged() 0 15 5
A logout() 0 7 1
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