-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
CodeIdTokenTokenResponseType.php
103 lines (88 loc) · 2.81 KB
/
CodeIdTokenTokenResponseType.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
declare(strict_types=1);
/*
* The MIT License (MIT)
*
* Copyright (c) 2014-2018 Spomky-Labs
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
namespace OAuth2Framework\Component\OpenIdConnect\IdTokenGrant;
use OAuth2Framework\Component\AuthorizationCodeGrant\AuthorizationCodeResponseType;
use OAuth2Framework\Component\AuthorizationEndpoint\Authorization;
use OAuth2Framework\Component\AuthorizationEndpoint\ResponseType;
use OAuth2Framework\Component\ImplicitGrant\TokenResponseType;
final class CodeIdTokenTokenResponseType implements ResponseType
{
/**
* @var AuthorizationCodeResponseType
*/
private $codeResponseType;
/**
* @var IdTokenResponseType
*/
private $idTokenResponseType;
/**
* @var TokenResponseType
*/
private $tokenResponseType;
/**
* CodeIdTokenTokenResponseType constructor.
*
* @param AuthorizationCodeResponseType $codeResponseType
* @param IdTokenResponseType $idTokenResponseType
* @param TokenResponseType $tokenResponseType
*/
public function __construct(AuthorizationCodeResponseType $codeResponseType, IdTokenResponseType $idTokenResponseType, TokenResponseType $tokenResponseType)
{
$this->codeResponseType = $codeResponseType;
$this->idTokenResponseType = $idTokenResponseType;
$this->tokenResponseType = $tokenResponseType;
}
/**
* {@inheritdoc}
*/
public function associatedGrantTypes(): array
{
return array_merge(
$this->codeResponseType->associatedGrantTypes(),
$this->idTokenResponseType->associatedGrantTypes(),
$this->tokenResponseType->associatedGrantTypes()
);
}
/**
* {@inheritdoc}
*/
public function name(): string
{
return 'code id_token token';
}
/**
* {@inheritdoc}
*/
public function getResponseMode(): string
{
return self::RESPONSE_TYPE_MODE_FRAGMENT;
}
/**
* {@inheritdoc}
*/
public function preProcess(Authorization $authorization): Authorization
{
$authorization = $this->codeResponseType->preProcess($authorization);
$authorization = $this->tokenResponseType->preProcess($authorization);
$authorization = $this->idTokenResponseType->preProcess($authorization);
return $authorization;
}
/**
* {@inheritdoc}
*/
public function process(Authorization $authorization): Authorization
{
$authorization = $this->codeResponseType->process($authorization);
$authorization = $this->tokenResponseType->process($authorization);
$authorization = $this->idTokenResponseType->process($authorization);
return $authorization;
}
}