Passed
Push — master ( dfb010...31c91b )
by Mike
03:32
created

UserBusinessFactory   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 89
Duplicated Lines 0 %

Test Coverage

Coverage 78.56%

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 89
ccs 22
cts 28
cp 0.7856
rs 10
c 0
b 0
f 0
wmc 9

9 Methods

Rating   Name   Duplication   Size   Complexity  
A createCredentialWriter() 0 4 1
A getLoginPluginList() 0 3 1
A createUserWriter() 0 5 1
A getSessionFacade() 0 3 1
A createLoginWriter() 0 4 1
A createAuthProvider() 0 5 1
A createUserValidator() 0 4 1
A createCredentialProvider() 0 4 1
A createLoginHandler() 0 5 1
1
<?php
2
declare(strict_types=1);
3
4
5
namespace Xervice\User\Business;
6
7
8
use Xervice\Core\Business\Model\Factory\AbstractBusinessFactory;
9
use Xervice\Session\Business\SessionFacade;
10
use Xervice\User\Business\Model\Authenticator\AuthProvider;
11
use Xervice\User\Business\Model\Authenticator\AuthProviderInterface;
12
use Xervice\User\Business\Model\Authenticator\UserCredentialProvider;
13
use Xervice\User\Business\Model\Authenticator\UserCredentialProviderInterface;
14
use Xervice\User\Business\Model\Login\LoginHandler;
15
use Xervice\User\Business\Model\Login\LoginHandlerInterface;
16
use Xervice\User\Business\Model\Validator\UserValidator;
17
use Xervice\User\Business\Model\Validator\UserValidatorInterface;
18
use Xervice\User\Business\Model\Writer\CredentialWriter;
19
use Xervice\User\Business\Model\Writer\CredentialWriterInterface;
20
use Xervice\User\Business\Model\Writer\LoginWriter;
21
use Xervice\User\Business\Model\Writer\LoginWriterInterface;
22
use Xervice\User\Business\Model\Writer\UserWriter;
23
use Xervice\User\Business\Model\Writer\UserWriterInterface;
24
use Xervice\User\UserDependencyProvider;
25
26
/**
27
 * @method \Xervice\User\Persistence\UserDataReader getReader()
28
 */
29
class UserBusinessFactory extends AbstractBusinessFactory
30
{
31
    /**
32
     * @return \Xervice\User\Business\Model\Writer\CredentialWriterInterface
33
     */
34 1
    public function createCredentialWriter(): CredentialWriterInterface
35
    {
36 1
        return new CredentialWriter(
37 1
            $this->getReader()
38
        );
39
    }
40
41
    /**
42
     * @return \Xervice\User\Business\Model\Writer\LoginWriterInterface
43
     */
44 1
    public function createLoginWriter(): LoginWriterInterface
45
    {
46 1
        return new LoginWriter(
47 1
            $this->getReader()
48
        );
49
    }
50
51
    /**
52
     * @return \Xervice\User\Business\Model\Login\LoginHandlerInterface
53
     */
54
    public function createLoginHandler(): LoginHandlerInterface
55
    {
56
        return new LoginHandler(
57
            $this->getSessionFacade(),
58
            $this->createAuthProvider()
59
        );
60
    }
61
62
    /**
63
     * @return \Xervice\User\Business\Model\Authenticator\AuthProviderInterface
64
     */
65 1
    public function createAuthProvider(): AuthProviderInterface
66
    {
67 1
        return new AuthProvider(
68 1
            $this->createCredentialProvider(),
69 1
            $this->getLoginPluginList()
70
        );
71
    }
72
73
    /**
74
     * @return \Xervice\User\Business\Model\Authenticator\UserCredentialProviderInterface
75
     */
76 1
    public function createCredentialProvider(): UserCredentialProviderInterface
77
    {
78 1
        return new UserCredentialProvider(
79 1
            $this->getReader()
80
        );
81
    }
82
83
    /**
84
     * @return \Xervice\User\Business\Model\Writer\UserWriterInterface
85
     */
86 7
    public function createUserWriter(): UserWriterInterface
87
    {
88 7
        return new UserWriter(
89 7
            $this->createUserValidator(),
90 7
            $this->getReader()
91
        );
92
    }
93
94
    /**
95
     * @return \Xervice\User\Business\Model\Validator\UserValidatorInterface
96
     */
97 7
    public function createUserValidator(): UserValidatorInterface
98
    {
99 7
        return new UserValidator(
100 7
            $this->getReader()
101
        );
102
    }
103
104
    /**
105
     * @return array
106
     */
107 1
    public function getLoginPluginList(): array
108
    {
109 1
        return $this->getDependency(UserDependencyProvider::LOGIN_PLUGINS);
110
    }
111
112
    /**
113
     * @return \Xervice\Session\Business\SessionFacade
114
     */
115
    public function getSessionFacade(): SessionFacade
116
    {
117
        return $this->getDependency(UserDependencyProvider::SESSION_FACADE);
118
    }
119
}