protected function doExecute() {

        $container = $this->getContainer();

        // On affecte le logger si besoin.
        if ($container->has('logger')) {
            $this->setLogger($container->get('logger'));
        }

        // Config
        $container->get('config')->merge($this->config);
        $this->setConfiguration($container->get('config'));

        // On récupère la session.
        $session = $container->get('session');
        $this->setSession($session);

        // On nettoie les veilles sessions
        $this->sessionCleanUp();

        // On démarre la session.
        $session->start();

        // Si c'est une requête pour garder en vie la session, on peut quitter ici.
        if ($this->input->get('stayAlive', false, 'bool') === true) {
            echo "1";
            $this->close();
        }

        // On initialise l'état utilisateur.
        if ($session->isNew() || $session->get('state') === null) {
            $session->set('state', new Registry);
        }

        // On tente d'auto-connecter l'utilisateur.
        $this->loginWithCookie();

        // On personnalise l'environnement suivant l'utilisateur dans la session.
        $user = $session->get('user');
        if ($user) {

            $language = $user->params->get('language');
            $helper   = new LanguageHelper;

            // On s'assure que la langue de l'utilisateur existe.
            if ($language && $helper->exists($language, JPATH_ROOT)) {
                $this->set('language', $language);
            }

            $timezone = $user->params->get('timezone');
            if ($timezone) {
                $this->set('timezone', $timezone);
            }

        }

        // On définit le fuseau horaire.
        @date_default_timezone_set($this->get('timezone', 'Europe/Paris'));

        // On récupère le controller.
        $controller = $this->route();

        // On contrôle si l'utilisateur doit changer son mot de passe.
        $this->checkUserRequireReset($controller);

        // On redirige en HTTPS si besoin.
        /*if ($this->get('force_ssl') && !$this->isSSLConnection() && $controller->isSSLEnabled()) {
            $uri = new Uri($this->get('uri.request'));
            $uri->setScheme('https');
            $this->redirect((string)$uri);
        }*/

        // On sauvegarde le controller actif.
        $this->_activeController = strtolower($controller->getName());

        try {

            $profiler = $this->container->has('profiler') ? $this->container->get('profiler') : false;

            if ($profiler) {
                $profiler->mark('beforeControllerExecute');
            }

            // On exécute la logique du controller et on récupère le résultat.
            $result = $controller->execute();

            if ($profiler) {
                $profiler->mark('afterControllerExecute');
            }

            // On effectue le rendu de la page avec le résultat.
            $this->render($result);

        } catch (\Exception $e) {
            $this->raiseError($e->getMessage(), $e->getCode(), $e);
        }

    }