public function checkSessionActivity(GetResponseEvent $event)
    {
        $request = $event->getRequest();

        if ($request->request->has('oauth_token')
            || $request->query->has('oauth_token')
            || $request->query->has('LOG')
            || null === $moduleId = $this->getModuleId($request->getPathInfo())
        ) {
            return;
        }

        if ($this->isAdminJsPolledRoute($moduleId, $request)) {
            return;
        }

        if ($moduleId === self::$modulesIds['prod'] && $this->isFlashUploadRequest($request)) {
            return;
        }

        // if we are already disconnected (ex. from another window), quit immediately
        if (!($this->app->getAuthenticator()->isAuthenticated())) {
            $this->setDisconnectResponse($event);

            return;
        }

        /** @var Session $session */
        $session = $this->app['repo.sessions']->find($this->app['session']->get('session_id'));

        $idle = 0;

        if (isset($this->app['phraseanet.configuration']['session']['idle'])) {
            $idle = (int)$this->app['phraseanet.configuration']['session']['idle'];
        }

        $now = new \DateTime();

        if ($idle > 0 && $now->getTimestamp() > $session->getUpdated()->getTimestamp() + $idle) {
            // we must disconnect due to idle time
            $this->app->getAuthenticator()->closeAccount();
            $this->setDisconnectResponse($event);

            return;
        }

        $entityManager = $this->app['orm.em'];

        $module = $this->addOrUpdateSessionModule($session, $moduleId, $now);

        $entityManager->persist($module);
        $entityManager->persist($session);
        $entityManager->flush();
    }
public function checkSessionActivity(GetResponseEvent $event)
    {
        $request = $event->getRequest();

        if ($request->request->has('oauth_token')
            || $request->query->has('oauth_token')
            || $request->query->has('LOG')
            || null === $moduleId = $this->getModuleId($request->getPathInfo())
        ) {
            return;
        }

        if ($this->isAdminJsPolledRoute($moduleId, $request)) {
            return;
        }

        if ($moduleId === self::$modulesIds['prod'] && $this->isFlashUploadRequest($request)) {
            return;
        }

        // if we are already disconnected (ex. from another window), quit immediately
        if (!($this->app->getAuthenticator()->isAuthenticated())) {
            $this->setDisconnectResponse($event);

            return;
        }

        /** @var Session $session */
        $session = $this->app['repo.sessions']->find($this->app['session']->get('session_id'));

        $idle = 0;

        if (isset($this->app['phraseanet.configuration']['session']['idle'])) {
            $idle = (int)$this->app['phraseanet.configuration']['session']['idle'];
        }

        $now = new \DateTime();

        if ($idle > 0 && $now->getTimestamp() > $session->getUpdated()->getTimestamp() + $idle) {
            // we must disconnect due to idle time
            $this->app->getAuthenticator()->closeAccount();
            $this->setDisconnectResponse($event);

            return;
        }

        $entityManager = $this->app['orm.em'];

        $module = $this->addOrUpdateSessionModule($session, $moduleId, $now);

        $entityManager->persist($module);
        $entityManager->persist($session);
        $entityManager->flush();
    }
public function checkSessionActivity ( GetResponseEvent $ event ) { $ request = $ event -> getRequest ( ) ; if ( $ request -> request -> has ( 'oauth_token' ) || $ request -> query -> has ( 'oauth_token' ) || $ request -> query -> has ( 'LOG' ) || null === $ moduleId = $ this -> getModuleId ( $ request -> getPathInfo ( ) ) ) { return ; } if ( $ this -> isAdminJsPolledRoute ( $ moduleId , $ request ) ) { return ; } if ( $ moduleId === self :: $ modulesIds [ 'prod' ] && $ this -> isFlashUploadRequest ( $ request ) ) { return ; } // if we are already disconnected (ex. from another window), quit immediately if ( ! ( $ this -> app -> getAuthenticator ( ) -> isAuthenticated ( ) ) ) { $ this -> setDisconnectResponse ( $ event ) ; return ; } /** @var Session $session */ $ session = $ this -> app [ 'repo.sessions' ] -> find ( $ this -> app [ 'session' ] -> get ( 'session_id' ) ) ; $ idle = 0 ; if ( isset ( $ this -> app [ 'phraseanet.configuration' ] [ 'session' ] [ 'idle' ] ) ) { $ idle = ( int ) $ this -> app [ 'phraseanet.configuration' ] [ 'session' ] [ 'idle' ] ; } $ now = new \ DateTime ( ) ; if ( $ idle > 0 && $ now -> getTimestamp ( ) > $ session -> getUpdated ( ) -> getTimestamp ( ) + $ idle ) { // we must disconnect due to idle time $ this -> app -> getAuthenticator ( ) -> closeAccount ( ) ; $ this -> setDisconnectResponse ( $ event ) ; return ; } $ entityManager = $ this -> app [ 'orm.em' ] ; $ module = $ this -> addOrUpdateSessionModule ( $ session , $ moduleId , $ now ) ; $ entityManager -> persist ( $ module ) ; $ entityManager -> persist ( $ session ) ; $ entityManager -> flush ( ) ; }
log real human activity on application, to keep session alive
@param GetResponseEvent $event
log real human activity on application to keep session alive