15
15
use Symfony \Component \BrowserKit \CookieJar ;
16
16
use Symfony \Component \BrowserKit \History ;
17
17
use Symfony \Component \BrowserKit \Request as BrowserkitRequest ;
18
+ use yii \web \Request as YiiRequest ;
18
19
use Symfony \Component \BrowserKit \Response ;
19
20
use Yii ;
20
21
use yii \base \Component ;
@@ -123,11 +124,11 @@ protected function getApplication(): \yii\base\Application
123
124
return Yii::$ app ?? throw new \RuntimeException ('Failed to create Yii2 application ' );
124
125
}
125
126
126
- private function getWebRequest (): Request
127
+ private function getWebRequest (): YiiRequest
127
128
{
128
129
$ request = $ this ->getApplication ()->request ;
129
- if (!$ request instanceof Request ) {
130
- throw new \RuntimeException ('Request component is not of type ' . Request ::class);
130
+ if (!$ request instanceof YiiRequest ) {
131
+ throw new \RuntimeException ('Request component is not of type ' . YiiRequest ::class);
131
132
}
132
133
return $ request ;
133
134
}
@@ -181,15 +182,11 @@ public function findAndLoginUser(int|string|IdentityInterface $user): void
181
182
*/
182
183
public function hashCookieData (string $ name , string $ value ): string
183
184
{
184
- $ app = $ this ->getApplication ();
185
- $ request = $ app ->getRequest ();
186
- if (!$ request instanceof Request) {
187
- throw new \RuntimeException ("Can't do cookie operations on non-web requests " );
188
- }
185
+ $ request = $ this ->getWebRequest ();
189
186
if (!$ request ->enableCookieValidation ) {
190
187
return $ value ;
191
188
}
192
- return $ app ->security ->hashData (serialize ([$ name , $ value ]), $ request ->cookieValidationKey );
189
+ return $ this -> getApplication () ->security ->hashData (serialize ([$ name , $ value ]), $ request ->cookieValidationKey );
193
190
}
194
191
195
192
/**
@@ -367,9 +364,9 @@ public function doRequest(object $request): Response
367
364
* Sending the response is problematic because it tries to send headers.
368
365
*/
369
366
$ app ->trigger ($ app ::EVENT_BEFORE_REQUEST );
370
- $ response = $ app ->handleRequest ($ yiiRequest );
367
+ $ yiiResponse = $ app ->handleRequest ($ yiiRequest );
371
368
$ app ->trigger ($ app ::EVENT_AFTER_REQUEST );
372
- $ response ->send ();
369
+ $ yiiResponse ->send ();
373
370
} catch (\Exception $ e ) {
374
371
if ($ e instanceof UserException) {
375
372
// Don't discard output and pass exception handling to Yii to be able
@@ -383,20 +380,20 @@ public function doRequest(object $request): Response
383
380
$ response = $ app ->response ;
384
381
}
385
382
386
- $ this ->encodeCookies ($ response , $ yiiRequest , $ app ->security );
383
+ $ this ->encodeCookies ($ yiiResponse , $ yiiRequest , $ app ->security );
387
384
388
- if ($ response ->isRedirection ) {
389
- Debug::debug ("[Redirect with headers] " . print_r ($ response ->getHeaders ()->toArray (), true ));
385
+ if ($ yiiResponse ->isRedirection ) {
386
+ Debug::debug ("[Redirect with headers] " . print_r ($ yiiResponse ->getHeaders ()->toArray (), true ));
390
387
}
391
388
392
389
$ content = ob_get_clean ();
393
- if (empty ($ content ) && !empty ($ response ->content ) && !isset ($ response ->stream )) {
390
+ if (empty ($ content ) && !empty ($ yiiResponse ->content ) && !isset ($ yiiResponse ->stream )) {
394
391
throw new \Exception ('No content was sent from Yii application ' );
395
392
} elseif ($ content === false ) {
396
393
throw new \Exception ('Failed to get output buffer ' );
397
394
}
398
395
399
- return new Response ($ content , $ response ->statusCode , $ response ->getHeaders ()->toArray ());
396
+ return new Response ($ content , $ yiiResponse ->statusCode , $ yiiResponse ->getHeaders ()->toArray ());
400
397
}
401
398
402
399
/**
@@ -405,7 +402,7 @@ public function doRequest(object $request): Response
405
402
*/
406
403
protected function encodeCookies (
407
404
YiiResponse $ response ,
408
- Request $ request ,
405
+ YiiRequest $ request ,
409
406
Security $ security
410
407
): void {
411
408
if ($ request ->enableCookieValidation ) {
@@ -520,7 +517,7 @@ public function setContext(array $context): void
520
517
*/
521
518
public function closeSession (): void
522
519
{
523
- $ app = \Yii:: $ app ;
520
+ $ app = $ this -> getApplication () ;
524
521
if ($ app instanceof \yii \web \Application && $ app ->has ('session ' , true )) {
525
522
$ app ->session ->close ();
526
523
}
0 commit comments