Skip to content

Commit

Permalink
Add PSR-15 middleware #5
Browse files Browse the repository at this point in the history
  • Loading branch information
odan committed Jul 18, 2019
1 parent e055200 commit c783e9d
Showing 1 changed file with 72 additions and 5 deletions.
77 changes: 72 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,17 +188,84 @@ $container[SessionInterface::class] = function (Container $container) {
};
```

#### Middleware setup
#### PSR-15 Middleware setup

Add the middleware factory:
For this example we use the [leage/container](https://github.com/thephpleague/container) package.

Add the PSR-15 middleware factory:

```php
$container[SessionMiddleware::class] = function (Container $container) {
use League\Container\Container;
use League\Container\ReflectionContainer;
use Odan\Session\SessionInterface;
use Odan\Session\SessionMiddleware;

$container = new Container();

$container->delegate(new ReflectionContainer());

// ...

$container->share(SessionMiddleware::class, static function (Container $container) {
return new SessionMiddleware($container->get(SessionInterface::class));
})->addArgument($container);
```

##### Registering the middleware

For this example we use the [league/route](https://github.com/thephpleague/container) package.

Register middleware for all routes:

```php
use League\Route\Router;
use Odan\Session\SessionMiddleware;

$router = $container->get(Router::class);

$router->middleware($container->get(SessionMiddleware::class));
```

Register middleware for a routing group:

```php
use League\Route\Router;
use Odan\Session\SessionMiddleware;

$router = $container->get(Router::class);

$router->group('/users', static function (RouteGroup $group): void {
$group->post('/login', \App\Action\UserLoginSubmitAction::class);
})->middleware($container->get(SessionMiddleware::class));
```

Register middleware for a single route:

```php
use League\Route\Router;
use Odan\Session\SessionMiddleware;

$router = $container->get(Router::class);

$router->get('/users', \App\Action\HomeIndexAction::class)
->middleware($container->get(SessionMiddleware::class));
```

#### Double Pass Middleware setup

> **Warning:** This middleware is deprecated. Please use the new PSR-15 middleware instead.
Add the double pass middleware factory:

```php
use Odan\Session\SessionDoublePassMiddleware;

$container[SessionDoublePassMiddleware::class] = function (Container $container) {
return new SessionDoublePassMiddleware($container->get(SessionInterface::class));
};
```

**Add the Slim application middleware**
**Add the Slim 3 application middleware**

Register middleware for all routes:

Expand All @@ -210,7 +277,7 @@ Register middleware for a single route:

```php
$this->get('/', \App\Action\HomeIndexAction::class)
->add(\Odan\Session\SessionMiddleware::class);
->add(\Odan\Session\SessionDoublePassMiddleware::class);
```

Register the middleware for a group of routes:
Expand Down

0 comments on commit c783e9d

Please sign in to comment.