Passed
Pull Request — master (#822)
by Stefano
02:47
created

OAuth2Middleware::process()   A

Complexity

Conditions 5
Paths 3

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 7
c 1
b 0
f 0
dl 0
loc 13
rs 9.6111
cc 5
nc 3
nop 2
1
<?php
2
declare(strict_types=1);
3
4
namespace App\Middleware;
5
6
use Authentication\Authenticator\Result;
7
use Cake\Utility\Hash;
8
use Laminas\Diactoros\Response\RedirectResponse;
9
use Psr\Http\Message\ResponseInterface;
10
use Psr\Http\Message\ServerRequestInterface;
11
use Psr\Http\Server\MiddlewareInterface;
12
use Psr\Http\Server\RequestHandlerInterface;
13
14
/**
15
 * Middleware to handle OAuth2 flow.
16
 */
17
class OAuth2Middleware implements MiddlewareInterface
18
{
19
    /**
20
     * @inheritDoc
21
     */
22
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
23
    {
24
        $result = $request->getAttribute('authenticationResult');
25
        if (empty($result) || !$result instanceof Result || !is_array($result->getData())) {
26
            return $handler->handle($request);
27
        }
28
29
        $authUrl = Hash::get($result->getData(), 'authUrl');
30
        if (empty($authUrl)) {
31
            return $handler->handle($request);
32
        }
33
34
        return new RedirectResponse($authUrl);
35
    }
36
}
37