ServiceContainer   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 11
eloc 24
c 2
b 0
f 0
dl 0
loc 74
rs 10
ccs 0
cts 58
cp 0

11 Methods

Rating   Name   Duplication   Size   Complexity  
A getBindingFactory() 0 3 1
A getSessionProcessor() 0 5 1
A getSignatureValidator() 0 4 1
A getLogoutSessionResolver() 0 3 1
A __construct() 0 3 1
A getAssertionValidator() 0 3 1
A getNameIdValidator() 0 3 1
A getSignatureResolver() 0 4 1
A getEndpointResolver() 0 8 1
A getCredentialResolver() 0 8 1
A getAssertionTimeValidator() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DMK\MKSamlAuth\Container;
6
7
use DMK\MKSamlAuth\Store\CredentialStore;
8
use DMK\MKSamlAuth\Store\SessionSsoStateStore;
9
use LightSaml\Binding\BindingFactory;
10
use LightSaml\Build\Container\ServiceContainerInterface;
11
use LightSaml\Provider\TimeProvider\SystemTimeProvider;
12
use LightSaml\Resolver\Credential\Factory\CredentialResolverFactory;
13
use LightSaml\Resolver\Endpoint\BindingEndpointResolver;
14
use LightSaml\Resolver\Endpoint\CompositeEndpointResolver;
15
use LightSaml\Resolver\Endpoint\DescriptorTypeEndpointResolver;
16
use LightSaml\Resolver\Endpoint\IndexEndpointResolver;
17
use LightSaml\Resolver\Endpoint\LocationEndpointResolver;
18
use LightSaml\Resolver\Endpoint\ServiceTypeEndpointResolver;
19
use LightSaml\Resolver\Session\SessionProcessor;
20
use LightSaml\Resolver\Signature\OwnSignatureResolver;
21
use LightSaml\Validator\Model\Assertion\AssertionTimeValidator;
22
use LightSaml\Validator\Model\Assertion\AssertionValidator;
23
use LightSaml\Validator\Model\NameId\NameIdValidator;
24
use LightSaml\Validator\Model\Signature\SignatureValidator;
25
use TYPO3\CMS\Core\SingletonInterface;
26
27
class ServiceContainer implements ServiceContainerInterface, SingletonInterface
28
{
29
    private $container;
30
31
    public function __construct(SingletonContainer $container)
32
    {
33
        $this->container = $container;
34
    }
35
36
    public function getAssertionValidator()
37
    {
38
        return $this->container->getInstance(AssertionValidator::class);
39
    }
40
41
    public function getAssertionTimeValidator()
42
    {
43
        return $this->container->getInstance(AssertionTimeValidator::class);
44
    }
45
46
    public function getSignatureResolver()
47
    {
48
        return $this->container->getInstance(OwnSignatureResolver::class, [
49
            $this->getCredentialResolver(),
50
        ]);
51
    }
52
53
    public function getEndpointResolver()
54
    {
55
        return $this->container->getInstance(CompositeEndpointResolver::class, [[
56
            $this->container->getInstance(BindingEndpointResolver::class),
57
            $this->container->getInstance(DescriptorTypeEndpointResolver::class),
58
            $this->container->getInstance(ServiceTypeEndpointResolver::class),
59
            $this->container->getInstance(IndexEndpointResolver::class),
60
            $this->container->getInstance(LocationEndpointResolver::class),
61
        ]]);
62
    }
63
64
    public function getNameIdValidator()
65
    {
66
        return $this->container->getInstance(NameIdValidator::class);
67
    }
68
69
    public function getBindingFactory()
70
    {
71
        return $this->container->getInstance(BindingFactory::class);
72
    }
73
74
    public function getSignatureValidator()
75
    {
76
        return $this->container->getInstance(SignatureValidator::class, [
77
            $this->getCredentialResolver(),
78
        ]);
79
    }
80
81
    public function getCredentialResolver()
82
    {
83
        /** @var CredentialResolverFactory $factory */
84
        $factory = $this->container->getInstance(CredentialResolverFactory::class, [
85
            $this->container->getInstance(CredentialStore::class),
86
        ]);
87
88
        return $factory->build();
89
    }
90
91
    public function getLogoutSessionResolver()
92
    {
93
        throw new \LogicException('Not implemented');
94
    }
95
96
    public function getSessionProcessor()
97
    {
98
        return $this->container->getInstance(SessionProcessor::class, [
99
            $this->container->getInstance(SessionSsoStateStore::class),
100
            $this->container->getInstance(SystemTimeProvider::class),
101
        ]);
102
    }
103
}
104