@@ -63,10 +63,11 @@ public function generateSignature(string $routeName, string $userId, string $use
63
63
$ extraParams ['token ' ] = $ this ->tokenGenerator ->createToken ($ userId , $ userEmail );
64
64
$ extraParams ['expires ' ] = $ expiryTimestamp ;
65
65
66
- $ uri = $ this ->router ->generate ($ routeName , $ extraParams , UrlGeneratorInterface::ABSOLUTE_URL );
66
+ $ uri = $ this ->router ->generate ($ routeName , $ extraParams , $ this ->useRelativePath ? UrlGeneratorInterface::RELATIVE_PATH : UrlGeneratorInterface::ABSOLUTE_URL );
67
+ $ signature = $ this ->uriSigner ->sign ($ uri );
67
68
68
69
/** @psalm-suppress PossiblyFalseArgument */
69
- return new VerifyEmailSignatureComponents (\DateTimeImmutable::createFromFormat ('U ' , (string ) $ expiryTimestamp ), $ this -> getSignedUrl ( $ uri ) , $ generatedAt );
70
+ return new VerifyEmailSignatureComponents (\DateTimeImmutable::createFromFormat ('U ' , (string ) $ expiryTimestamp ), $ signature , $ generatedAt );
70
71
}
71
72
72
73
public function validateEmailConfirmation (string $ signedUrl , string $ userId , string $ userEmail ): void
@@ -112,56 +113,4 @@ public function validateEmailConfirmationFromRequest(Request $request, string $u
112
113
}
113
114
}
114
115
115
- private function generateAbsolutePath (string $ absoluteUri ): string
116
- {
117
- $ parsedUri = parse_url ($ absoluteUri );
118
- \assert (\is_array ($ parsedUri ), 'Could not parse the provided URI. ' );
119
-
120
- $ path = $ parsedUri ['path ' ] ?? '' ;
121
- $ query = $ this ->getQueryStringFromParsedUrl ($ parsedUri );
122
- $ fragment = isset ($ parsedUri ['fragment ' ]) ? '# ' .$ parsedUri ['fragment ' ] : '' ;
123
-
124
- return $ path .$ query .$ fragment ;
125
- }
126
-
127
- public function generateSigningString (string $ uri ): string
128
- {
129
- if (!$ this ->useRelativePath ) {
130
- return $ uri ;
131
- }
132
-
133
- return $ this ->generateAbsolutePath ($ uri );
134
- }
135
-
136
- private function generateBaseUrl (string $ absoluteUri ): string
137
- {
138
- $ parsedUri = parse_url ($ absoluteUri );
139
- $ scheme = isset ($ parsedUri ['scheme ' ]) ? $ parsedUri ['scheme ' ].':// ' : '' ;
140
- $ host = $ parsedUri ['host ' ] ?? '' ;
141
-
142
- return $ scheme .$ host ;
143
- }
144
-
145
- private function getSignedUrl (string $ uri ): string
146
- {
147
- $ signature = $ this ->uriSigner ->sign ($ this ->generateSigningString ($ uri ));
148
-
149
- if (false === $ this ->useRelativePath ) {
150
- return $ signature ;
151
- }
152
-
153
- return $ this ->generateBaseUrl ($ uri ).$ signature ;
154
- }
155
-
156
- /**
157
- * @param array{scheme?: string, host?: string, port?: int, user?: string, pass?: string, query?: string, path?: string, fragment?: string} $parsedUrl
158
- */
159
- private function getQueryStringFromParsedUrl (array $ parsedUrl ): string
160
- {
161
- if (!\array_key_exists ('query ' , $ parsedUrl )) {
162
- return '' ;
163
- }
164
-
165
- return $ parsedUrl ['query ' ] ? ('? ' .$ parsedUrl ['query ' ]) : '' ;
166
- }
167
116
}
0 commit comments