AzuraCast/src/Provider/MiddlewareProvider.php

106 lines
3.2 KiB
PHP

<?php
namespace App\Provider;
use App\Middleware;
use Pimple\ServiceProviderInterface;
use Pimple\Container;
use App;
use App\Entity;
class MiddlewareProvider implements ServiceProviderInterface
{
public function register(Container $di)
{
$di[Middleware\EnableSession::class] = function($di) {
return new Middleware\EnableSession($di[App\Session::class]);
};
$di[Middleware\EnableRouter::class] = function($di) {
return new Middleware\EnableRouter($di['router']);
};
$di[Middleware\EnableView::class] = function($di) {
return new Middleware\EnableView($di[App\View::class]);
};
$di[Middleware\EnforceSecurity::class] = function($di) {
return new Middleware\EnforceSecurity(
$di[\Doctrine\ORM\EntityManager::class],
$di[App\Assets::class]
);
};
$di[Middleware\GetCurrentUser::class] = function($di) {
return new Middleware\GetCurrentUser(
$di[App\Auth::class],
$di[App\Customization::class],
$di[\Symfony\Component\EventDispatcher\EventDispatcher::class]
);
};
$di[Middleware\GetStation::class] = function($di) {
/** @var \Doctrine\ORM\EntityManager $em */
$em = $di[\Doctrine\ORM\EntityManager::class];
/** @var Entity\Repository\StationRepository $station_repo */
$station_repo = $em->getRepository(Entity\Station::class);
return new Middleware\GetStation(
$station_repo,
$di[App\Radio\Adapters::class]
);
};
$di[Middleware\Permissions::class] = function($di) {
return new Middleware\Permissions(
$di[App\Acl::class]
);
};
$di[Middleware\RateLimit::class] = function($di) {
return new Middleware\RateLimit(
$di[App\RateLimit::class]
);
};
$di[Middleware\RemoveSlashes::class] = function() {
return new Middleware\RemoveSlashes;
};
/*
* Module-specific middleware
*/
$di[Middleware\Module\Admin::class] = function($di) {
/** @var \App\Config $config */
$config = $di[App\Config::class];
return new Middleware\Module\Admin(
$di[App\Acl::class],
$config->get('admin/dashboard')
);
};
$di[Middleware\Module\Api::class] = function($di) {
/** @var \Doctrine\ORM\EntityManager $em */
$em = $di[\Doctrine\ORM\EntityManager::class];
/** @var Entity\Repository\ApiKeyRepository $api_repo */
$api_repo = $em->getRepository(Entity\ApiKey::class);
return new Middleware\Module\Api(
$di[App\Session::class],
$api_repo
);
};
$di[Middleware\Module\Stations::class] = function() {
return new Middleware\Module\Stations;
};
$di[Middleware\Module\StationFiles::class] = function($di) {
return new Middleware\Module\StationFiles;
};
}
}