getService( 'OATHUserRepository' ) ->findByUser( $user ); $module = $authUser->getModule(); if ( $module === null ) { return AuthenticationResponse::newAbstain(); } $provider = $this->getProviderForModule( $module ); return $provider->beginSecondaryAuthentication( $user, $reqs ); } /** * Verify the second factor. * @inheritDoc */ public function continueSecondaryAuthentication( $user, array $reqs ) { $authUser = MediaWikiServices::getInstance()->getService( 'OATHUserRepository' ) ->findByUser( $user ); $module = $authUser->getModule(); $provider = $this->getProviderForModule( $module ); $response = $provider->continueSecondaryAuthentication( $user, $reqs ); if ( $response->status === AuthenticationResponse::PASS ) { $user->getRequest()->getSession()->set( OATHAuth::AUTHENTICATED_OVER_2FA, true ); } return $response; } /** * @param IModule $module * @return SecondaryAuthenticationProvider */ private function getProviderForModule( IModule $module ) { $provider = $module->getSecondaryAuthProvider(); $provider->setLogger( $this->logger ); $provider->setManager( $this->manager ); $provider->setConfig( $this->config ); return $provider; } }