OAuthServerBuilder::getConfig()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: Alexandre
5
 * Date: 23/06/2018
6
 * Time: 18:08
7
 */
8
9
namespace OAuth2;
10
11
12
use OAuth2\Extensions\ExtensionInterface;
13
use OAuth2\Roles\AuthorizationServer\AuthorizationServerBuilder;
14
use OAuth2\Roles\AuthorizationServer\EndUserInterface;
15
use OAuth2\Roles\ResourceServer\BearerAuthenticationMethods\FormEncodedBodyParameter;
16
use OAuth2\Roles\ResourceServer\BearerAuthenticationMethods\URIQueryParameter;
17
use OAuth2\Roles\ResourceServer\ResourceServer;
18
use OAuth2\ScopePolicy\ScopePolicyManager;
19
use OAuth2\Storages\StorageManager;
20
use OAuth2\Storages\StorageRepositoryBuilder;
21
22
class OAuthServerBuilder
23
{
24
    /**
25
     * @var ExtensionInterface[]
26
     */
27
    protected $extensions = [];
28
29
    /**
30
     * @var Config
31
     */
32
    protected $config;
33
34
    /**
35
     * @var StorageRepositoryBuilder
36
     */
37
    protected $storages;
38
    /**
39
     * @var EndUserInterface
40
     */
41
    private $endUser;
42
43
    public function __construct(EndUserInterface $endUser)
44
    {
45
        $this->config = new Config();
46
        $this->storages = new StorageRepositoryBuilder();
47
        $this->endUser = $endUser;
48
    }
49
50
    public function getConfig() {
51
        return $this->config;
52
    }
53
54
    public function getStorages() {
55
        return $this->storages;
56
    }
57
58
    public function addExtension(ExtensionInterface $extension)
59
    {
60
        $this->extensions[] = $extension;
61
    }
62
63
    public function build()
64
    {
65
        $scopePolicyManager= new ScopePolicyManager($this->config->getScopePolicy());
66
        $storageManager = $this->storages->build();
67
68
        $authorizationServerBuilder = new AuthorizationServerBuilder($this->config, $storageManager, $scopePolicyManager, $this->endUser);
69
        foreach ($this->extensions as $extension) {
70
            $extension->extendAuthorizationServerBuilder($authorizationServerBuilder);
71
        }
72
        $authorizationServer = $authorizationServerBuilder->build();
73
74
        $resourceServer = (new ResourceServer($storageManager, $scopePolicyManager))
75
            ->addBearerAuthenticationMethod(new FormEncodedBodyParameter())
76
            ->addBearerAuthenticationMethod(new URIQueryParameter());
77
78
        $server = new OAuthServer($authorizationServer, $resourceServer);
79
80
        return $server;
81
    }
82
}