public function resetPasswordConfirm($token, $remoteIP, Event $event)
    {
        // Hash the remote caller's IP with the token
        $tokenHash = md5($token . '-' . str_replace('.', '-', $remoteIP));

        /** @var UsersRepository $repo */
        $repo = $this->em->getRepository(Entity\Users::class);
        if ($userEntity = $repo->getUserShadowAuth($tokenHash)) {
            $userAuth = $repo->getUserAuthData($userEntity->getId());
            // Update entries
            $userEntity->setPassword($userAuth->getShadowpassword());
            $userEntity->setShadowpassword(null);
            $userEntity->setShadowtoken(null);
            $userEntity->setShadowvalidity(null);

            $this->em->getRepository(Entity\Users::class)->save($userEntity);

            $this->app['logger.flash']->clear();
            $this->app['logger.flash']->success(Trans::__('general.access-control.reset-successful'));
            $this->app['dispatcher']->dispatch(AccessControlEvents::RESET_SUCCESS, $event);

            return true;
        }
        // That was not a valid token, or too late, or not from the correct IP.
        $this->app['logger.system']->error('Somebody tried to reset a password with an invalid token.', ['event' => 'authentication']);
        $this->app['logger.flash']->error(Trans::__('general.access-control.reset-failed'));
        $this->app['dispatcher']->dispatch(AccessControlEvents::RESET_FAILURE, $event);

        return false;
    }
public function resetPasswordConfirm($token, $remoteIP, Event $event)
    {
        // Hash the remote caller's IP with the token
        $tokenHash = md5($token . '-' . str_replace('.', '-', $remoteIP));

        /** @var UsersRepository $repo */
        $repo = $this->em->getRepository(Entity\Users::class);
        if ($userEntity = $repo->getUserShadowAuth($tokenHash)) {
            $userAuth = $repo->getUserAuthData($userEntity->getId());
            // Update entries
            $userEntity->setPassword($userAuth->getShadowpassword());
            $userEntity->setShadowpassword(null);
            $userEntity->setShadowtoken(null);
            $userEntity->setShadowvalidity(null);

            $this->em->getRepository(Entity\Users::class)->save($userEntity);

            $this->app['logger.flash']->clear();
            $this->app['logger.flash']->success(Trans::__('general.access-control.reset-successful'));
            $this->app['dispatcher']->dispatch(AccessControlEvents::RESET_SUCCESS, $event);

            return true;
        }
        // That was not a valid token, or too late, or not from the correct IP.
        $this->app['logger.system']->error('Somebody tried to reset a password with an invalid token.', ['event' => 'authentication']);
        $this->app['logger.flash']->error(Trans::__('general.access-control.reset-failed'));
        $this->app['dispatcher']->dispatch(AccessControlEvents::RESET_FAILURE, $event);

        return false;
    }
public function resetPasswordConfirm ( $ token , $ remoteIP , Event $ event ) { // Hash the remote caller's IP with the token $ tokenHash = md5 ( $ token . '-' . str_replace ( '.' , '-' , $ remoteIP ) ) ; /** @var UsersRepository $repo */ $ repo = $ this -> em -> getRepository ( Entity \ Users :: class ) ; if ( $ userEntity = $ repo -> getUserShadowAuth ( $ tokenHash ) ) { $ userAuth = $ repo -> getUserAuthData ( $ userEntity -> getId ( ) ) ; // Update entries $ userEntity -> setPassword ( $ userAuth -> getShadowpassword ( ) ) ; $ userEntity -> setShadowpassword ( null ) ; $ userEntity -> setShadowtoken ( null ) ; $ userEntity -> setShadowvalidity ( null ) ; $ this -> em -> getRepository ( Entity \ Users :: class ) -> save ( $ userEntity ) ; $ this -> app [ 'logger.flash' ] -> clear ( ) ; $ this -> app [ 'logger.flash' ] -> success ( Trans :: __ ( 'general.access-control.reset-successful' ) ) ; $ this -> app [ 'dispatcher' ] -> dispatch ( AccessControlEvents :: RESET_SUCCESS , $ event ) ; return true ; } // That was not a valid token, or too late, or not from the correct IP. $ this -> app [ 'logger.system' ] -> error ( 'Somebody tried to reset a password with an invalid token.' , [ 'event' => 'authentication' ] ) ; $ this -> app [ 'logger.flash' ] -> error ( Trans :: __ ( 'general.access-control.reset-failed' ) ) ; $ this -> app [ 'dispatcher' ] -> dispatch ( AccessControlEvents :: RESET_FAILURE , $ event ) ; return false ; }
Handle a password reset confirmation.

@param string $token
@param string $remoteIP
@param Event  $event

@return bool
Handle a password reset confirmation .