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 | |||||