Файл: onlinepoisk.wm-scripts.ru/vendor/silex/silex/silex/src/Silex/Provider/RememberMeServiceProvider.php
Строк: 176
<?php
/*
* This file is part of the Silex framework.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SilexProvider;
use SilexApplication;
use SilexServiceProviderInterface;
use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentSecurityCoreAuthenticationProviderRememberMeAuthenticationProvider;
use SymfonyComponentSecurityHttpFirewallRememberMeListener;
use SymfonyComponentSecurityHttpRememberMeTokenBasedRememberMeServices;
use SymfonyComponentSecurityHttpRememberMeResponseListener;
/**
* Remember-me authentication for the SecurityServiceProvider
*
* @author Jérôme Tamarelle <jerome@tamarelle.net>
*/
class RememberMeServiceProvider implements ServiceProviderInterface
{
public function register(Application $app)
{
$app['security.remember_me.response_listener'] = $app->share(function() {
return new ResponseListener();
});
$app['security.authentication_listener.factory.remember_me'] = $app->protect(function($name, $options) use ($app) {
if (empty($options['key'])) {
$options['key'] = $name;
}
if (!isset($app['security.remember_me.service.'.$name])) {
$app['security.remember_me.service.'.$name] = $app['security.remember_me.service._proto']($name, $options);
}
if (!isset($app['security.authentication_listener.'.$name.'.remember_me'])) {
$app['security.authentication_listener.'.$name.'.remember_me'] = $app['security.authentication_listener.remember_me._proto']($name, $options);
}
if (!isset($app['security.authentication_provider.'.$name.'.remember_me'])) {
$app['security.authentication_provider.'.$name.'.remember_me'] = $app['security.authentication_provider.remember_me._proto']($name, $options);
}
return array(
'security.authentication_provider.'.$name.'.remember_me',
'security.authentication_listener.'.$name.'.remember_me',
null, // entry point
'remember_me'
);
});
$app['security.remember_me.service._proto'] = $app->protect(function($providerKey, $options) use ($app) {
return $app->share(function () use ($providerKey, $options, $app) {
$options = array_replace(array(
'name' => 'REMEMBERME',
'lifetime' => 31536000,
'path' => '/',
'domain' => null,
'secure' => false,
'httponly' => true,
'always_remember_me' => false,
'remember_me_parameter' => '_remember_me',
), $options);
return new TokenBasedRememberMeServices(array($app['security.user_provider.'.$providerKey]), $options['key'], $providerKey, $options, $app['logger']);
});
});
$app['security.authentication_listener.remember_me._proto'] = $app->protect(function ($providerKey) use ($app) {
return $app->share(function () use ($app, $providerKey) {
$listener = new RememberMeListener(
$app['security'],
$app['security.remember_me.service.'.$providerKey],
$app['security.authentication_manager'],
$app['logger']
);
return $listener;
});
});
$app['security.authentication_provider.remember_me._proto'] = $app->protect(function ($name, $options) use ($app) {
return $app->share(function () use ($app, $name, $options) {
return new RememberMeAuthenticationProvider($app['security.user_checker'], $options['key'], $name);
});
});
}
public function boot(Application $app)
{
if (!isset($app['security'])) {
throw new LogicException('You must register the SecurityServiceProvider to use the RememberMeServiceProvider');
}
// In Symfony 2.2, this is a proper subscriber
if ($app['security.remember_me.response_listener'] instanceof EventSubscriberInterface) {
$app['dispatcher']->addSubscriber($app['security.remember_me.response_listener']);
} else {
$app['dispatcher']->addListener('kernel.response', array($app['security.remember_me.response_listener'], 'onKernelResponse'));
}
}
}