Eccube\Application::initSecurity PHP Метод

initSecurity() публичный Метод

public initSecurity ( )
    public function initSecurity()
    {
        $this->register(new \Silex\Provider\SecurityServiceProvider());
        $this->register(new \Silex\Provider\RememberMeServiceProvider());
        $this['security.firewalls'] = array('admin' => array('pattern' => "^/{$this['config']['admin_route']}/", 'form' => array('login_path' => "/{$this['config']['admin_route']}/login", 'check_path' => "/{$this['config']['admin_route']}/login_check", 'username_parameter' => 'login_id', 'password_parameter' => 'password', 'with_csrf' => true, 'use_forward' => true), 'logout' => array('logout_path' => "/{$this['config']['admin_route']}/logout", 'target_url' => "/{$this['config']['admin_route']}/"), 'users' => $this['orm.em']->getRepository('Eccube\\Entity\\Member'), 'anonymous' => true), 'customer' => array('pattern' => '^/', 'form' => array('login_path' => '/mypage/login', 'check_path' => '/login_check', 'username_parameter' => 'login_email', 'password_parameter' => 'login_pass', 'with_csrf' => true, 'use_forward' => true), 'logout' => array('logout_path' => '/logout', 'target_url' => '/'), 'remember_me' => array('key' => sha1($this['config']['auth_magic']), 'name' => $this['config']['cookie_name'] . '_rememberme', 'path' => $this['config']['root_urlpath'] ?: '/', 'secure' => $this['config']['force_ssl'], 'httponly' => true, 'always_remember_me' => false, 'remember_me_parameter' => 'login_memory'), 'users' => $this['orm.em']->getRepository('Eccube\\Entity\\Customer'), 'anonymous' => true));
        $this['security.access_rules'] = array(array("^/{$this['config']['admin_route']}/login", 'IS_AUTHENTICATED_ANONYMOUSLY'), array("^/{$this['config']['admin_route']}/", 'ROLE_ADMIN'), array('^/mypage/login', 'IS_AUTHENTICATED_ANONYMOUSLY'), array('^/mypage/withdraw_complete', 'IS_AUTHENTICATED_ANONYMOUSLY'), array('^/mypage/change', 'IS_AUTHENTICATED_FULLY'), array('^/mypage', 'ROLE_USER'));
        $this['eccube.password_encoder'] = $this->share(function ($app) {
            return new \Eccube\Security\Core\Encoder\PasswordEncoder($app['config']);
        });
        $this['security.encoder_factory'] = $this->share(function ($app) {
            return new \Symfony\Component\Security\Core\Encoder\EncoderFactory(array('Eccube\\Entity\\Customer' => $app['eccube.password_encoder'], 'Eccube\\Entity\\Member' => $app['eccube.password_encoder']));
        });
        $this['eccube.event_listner.security'] = $this->share(function ($app) {
            return new \Eccube\EventListener\SecurityEventListener($app['orm.em']);
        });
        $this['user'] = function ($app) {
            $token = $app['security']->getToken();
            return $token !== null ? $token->getUser() : null;
        };
        // ログイン時のイベントを設定.
        $this['dispatcher']->addListener(\Symfony\Component\Security\Http\SecurityEvents::INTERACTIVE_LOGIN, array($this['eccube.event_listner.security'], 'onInteractiveLogin'));
        // Voterの設定
        $app = $this;
        $this['authority_voter'] = $this->share(function ($app) {
            return new \Eccube\Security\Voter\AuthorityVoter($app);
        });
        $app['security.voters'] = $app->extend('security.voters', function ($voters) use($app) {
            $voters[] = $app['authority_voter'];
            return $voters;
        });
        $this['security.access_manager'] = $this->share(function ($app) {
            return new \Symfony\Component\Security\Core\Authorization\AccessDecisionManager($app['security.voters'], 'unanimous');
        });
    }