aboutsummaryrefslogtreecommitdiff
path: root/lib/middleware/HandleAccessDeniedMiddleware.php
blob: 829b5167e4625f2e41bdc9ee9510665e24d43fbd (plain)
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
<?php
namespace Studip\Middleware;

use AccessDeniedException;
use LoginException;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use User;

final class HandleAccessDeniedMiddleware implements MiddlewareInterface
{
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        try {
            return $handler->handle($request);
        } catch (AccessDeniedException $ade) {
            if (!User::findCurrent()) {
                throw new LoginException();
            }

            throw $ade;
        }
    }
}