Changeset View
Changeset View
Standalone View
Standalone View
src/applications/auth/factor/PhabricatorAuthFactor.php
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | abstract class PhabricatorAuthFactor extends Phobject { | ||||
public function canCreateNewConfiguration(PhabricatorUser $user) { | public function canCreateNewConfiguration(PhabricatorUser $user) { | ||||
return true; | return true; | ||||
} | } | ||||
public function getConfigurationCreateDescription(PhabricatorUser $user) { | public function getConfigurationCreateDescription(PhabricatorUser $user) { | ||||
return null; | return null; | ||||
} | } | ||||
abstract public function getEnrollDescription( | |||||
PhabricatorAuthFactorProvider $provider, | |||||
PhabricatorUser $user); | |||||
public function getEnrollButtonText( | |||||
PhabricatorAuthFactorProvider $provider, | |||||
PhabricatorUser $user) { | |||||
return pht('Continue'); | |||||
} | |||||
public function getFactorOrder() { | public function getFactorOrder() { | ||||
return 1000; | return 1000; | ||||
} | } | ||||
final public function newSortVector() { | final public function newSortVector() { | ||||
return id(new PhutilSortVector()) | return id(new PhutilSortVector()) | ||||
->addInt($this->canCreateNewProvider() ? 0 : 1) | ->addInt($this->canCreateNewProvider() ? 0 : 1) | ||||
->addInt($this->getFactorOrder()) | ->addInt($this->getFactorOrder()) | ||||
▲ Show 20 Lines • Show All 238 Lines • ▼ Show 20 Lines | if (!$sync_token) { | ||||
$sync_token = id(new PhabricatorAuthTemporaryToken()) | $sync_token = id(new PhabricatorAuthTemporaryToken()) | ||||
->setIsNewTemporaryToken(true) | ->setIsNewTemporaryToken(true) | ||||
->setTokenResource($user->getPHID()) | ->setTokenResource($user->getPHID()) | ||||
->setTokenType($sync_type) | ->setTokenType($sync_type) | ||||
->setTokenCode($sync_key_digest) | ->setTokenCode($sync_key_digest) | ||||
->setTokenExpires($now + $sync_ttl); | ->setTokenExpires($now + $sync_ttl); | ||||
// Note that property generation is unguarded, since factors that push | |||||
// a challenge generally need to perform a write there. | |||||
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); | |||||
$properties = $this->newMFASyncTokenProperties($user); | $properties = $this->newMFASyncTokenProperties($user); | ||||
foreach ($properties as $key => $value) { | foreach ($properties as $key => $value) { | ||||
$sync_token->setTemporaryTokenProperty($key, $value); | $sync_token->setTemporaryTokenProperty($key, $value); | ||||
} | } | ||||
$sync_token->save(); | $sync_token->save(); | ||||
unset($unguarded); | |||||
} | } | ||||
$form->addHiddenInput($this->getMFASyncTokenFormKey(), $sync_key); | $form->addHiddenInput($this->getMFASyncTokenFormKey(), $sync_key); | ||||
return $sync_token; | return $sync_token; | ||||
} | } | ||||
protected function newMFASyncTokenProperties(PhabricatorUser $user) { | protected function newMFASyncTokenProperties(PhabricatorUser $user) { | ||||
Show All 12 Lines |