Changeset View
Changeset View
Standalone View
Standalone View
src/applications/auth/factor/PhabricatorTOTPAuthFactor.php
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | final class PhabricatorTOTPAuthFactor extends PhabricatorAuthFactor { | ||||
public function processAddFactorForm( | public function processAddFactorForm( | ||||
PhabricatorAuthFactorProvider $provider, | PhabricatorAuthFactorProvider $provider, | ||||
AphrontFormView $form, | AphrontFormView $form, | ||||
AphrontRequest $request, | AphrontRequest $request, | ||||
PhabricatorUser $user) { | PhabricatorUser $user) { | ||||
$sync_token = $this->loadMFASyncToken( | $sync_token = $this->loadMFASyncToken( | ||||
$provider, | |||||
$request, | $request, | ||||
$form, | $form, | ||||
$user); | $user); | ||||
$secret = $sync_token->getTemporaryTokenProperty('secret'); | $secret = $sync_token->getTemporaryTokenProperty('secret'); | ||||
$code = $request->getStr('totpcode'); | $code = $request->getStr('totpcode'); | ||||
$e_code = true; | $e_code = true; | ||||
▲ Show 20 Lines • Show All 366 Lines • ▼ Show 20 Lines | foreach ($timesteps as $timestep) { | ||||
if (phutil_hashes_are_identical($code, $expect_code)) { | if (phutil_hashes_are_identical($code, $expect_code)) { | ||||
return $timestep; | return $timestep; | ||||
} | } | ||||
} | } | ||||
return null; | return null; | ||||
} | } | ||||
protected function newMFASyncTokenProperties(PhabricatorUser $user) { | protected function newMFASyncTokenProperties( | ||||
PhabricatorAuthFactorProvider $providerr, | |||||
PhabricatorUser $user) { | |||||
return array( | return array( | ||||
'secret' => self::generateNewTOTPKey(), | 'secret' => self::generateNewTOTPKey(), | ||||
); | ); | ||||
} | } | ||||
} | } |