Skip to content

Commit 08d13ac

Browse files
author
arp
committed
created the conditionMiddleware class
1 parent 7f3ac60 commit 08d13ac

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
3+
namespace Mouf\Mvc\Splash;
4+
5+
use Mouf\Utils\Common\Condition\ToCondition;
6+
use Psr\Http\Message\ResponseInterface;
7+
use Psr\Http\Message\ServerRequestInterface;
8+
use Psr\Http\Server\MiddlewareInterface;
9+
use Psr\Http\Server\RequestHandlerInterface;
10+
11+
/**
12+
* A middleware used to conditionally redirect to other middleware(s)
13+
*
14+
* Class ConditionMiddleware
15+
* @package Mouf\Mvc\Splash
16+
*/
17+
class ConditionMiddleware implements MiddlewareInterface{
18+
19+
/**
20+
* @var callable
21+
*/
22+
private $condition;
23+
/**
24+
* @var MiddlewareInterface
25+
*/
26+
private $ifMiddleware;
27+
/**
28+
* @var MiddlewareInterface
29+
*/
30+
private $elseMiddleware;
31+
32+
public function __construct(ToCondition $condition, MiddlewareInterface $ifMiddleware, MiddlewareInterface $elseMiddleware = null)
33+
{
34+
$this->condition = $condition;
35+
$this->ifMiddleware = $ifMiddleware;
36+
$this->elseMiddleware = $elseMiddleware;
37+
}
38+
39+
/**
40+
* Process an incoming server request and return a response, optionally delegating
41+
* response creation to a handler.
42+
*/
43+
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
44+
{
45+
if($this->condition->isOk()) {
46+
$this->ifMiddleware->process($request, $handler);
47+
} else if($this->elseMiddleware) {
48+
$this->elseMiddleware->process($request, $handler);
49+
} else {
50+
$handler->handle($request);
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)