Issues (5)

src/Configuration/UserPasswordTrait.php (2 issues)

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Nyholm\Dsn\Configuration;
6
7
trait UserPasswordTrait
8
{
9
    /**
10
     * @var array{ user: string|null, password: string|null, }
0 ignored issues
show
Documentation Bug introduced by
The doc comment array{ at position 2 could not be parsed: the token is null at position 2.
Loading history...
11
     */
12
    private $authentication = ['user' => null, 'password' => null];
13
14
    public function getAuthentication(): array
15
    {
16
        return $this->authentication;
17
    }
18
19
    /**
20
     * @param array{ user?: string|null, password?: string|null, } $authentication
0 ignored issues
show
Documentation Bug introduced by
The doc comment user?: string|null, password?: string|null, } at position 0 could not be parsed: Unknown type name 'user?' at position 0 in user?: string|null, password?: string|null, }.
Loading history...
21
     */
22
    private function setAuthentication(array $authentication): void
23
    {
24
        if (!empty($authentication)) {
25
            $this->authentication['user'] = $authentication['user'] ?? null;
26
            $this->authentication['password'] = $authentication['password'] ?? null;
27
        }
28
    }
29
30
    public function getUser(): ?string
31
    {
32
        return $this->authentication['user'] ?? null;
33
    }
34
35
    /**
36
     * @return static
37
     */
38
    public function withUser(?string $user)
39
    {
40
        $new = clone $this;
41
        $new->authentication['user'] = $user;
42
43
        return $new;
44
    }
45
46
    public function getPassword(): ?string
47
    {
48
        return $this->authentication['password'] ?? null;
49
    }
50
51
    /**
52
     * @return static
53
     */
54
    public function withPassword(?string $password)
55
    {
56
        $new = clone $this;
57
        $new->authentication['password'] = $password;
58
59
        return $new;
60
    }
61
62
    private function getUserInfoString(): string
63
    {
64
        $user = $this->getUser() ?? '';
65
        $password = $this->getPassword() ?? '';
66
67
        if ('' === $password && '' === $user) {
68
            return '';
69
        }
70
71
        return $user.('' === $password ? '' : ':'.$password).'@';
72
    }
73
}
74