Path: blob/master/src/applications/auth/controller/mfa/PhabricatorAuthFactorProviderEditController.php
12262 views
<?php12final class PhabricatorAuthFactorProviderEditController3extends PhabricatorAuthFactorProviderController {45public function handleRequest(AphrontRequest $request) {6$this->requireApplicationCapability(7AuthManageProvidersCapability::CAPABILITY);89$engine = id(new PhabricatorAuthFactorProviderEditEngine())10->setController($this);1112$id = $request->getURIData('id');13if (!$id) {14$factor_key = $request->getStr('providerFactorKey');1516$map = PhabricatorAuthFactor::getAllFactors();17$factor = idx($map, $factor_key);18if (!$factor) {19return $this->buildFactorSelectionResponse();20}2122$engine23->addContextParameter('providerFactorKey', $factor_key)24->setProviderFactor($factor);25}2627return $engine->buildResponse();28}2930private function buildFactorSelectionResponse() {31$request = $this->getRequest();32$viewer = $this->getViewer();3334$cancel_uri = $this->getApplicationURI('mfa/');3536$factors = PhabricatorAuthFactor::getAllFactors();3738$menu = id(new PHUIObjectItemListView())39->setUser($viewer)40->setBig(true)41->setFlush(true);4243$factors = msortv($factors, 'newSortVector');4445foreach ($factors as $factor_key => $factor) {46$factor_uri = id(new PhutilURI('/mfa/edit/'))47->replaceQueryParam('providerFactorKey', $factor_key);48$factor_uri = $this->getApplicationURI($factor_uri);4950$is_enabled = $factor->canCreateNewProvider();5152$item = id(new PHUIObjectItemView())53->setHeader($factor->getFactorName())54->setImageIcon($factor->newIconView())55->addAttribute($factor->getFactorCreateHelp());5657if ($is_enabled) {58$item59->setHref($factor_uri)60->setClickable(true);61} else {62$item->setDisabled(true);63}6465$create_description = $factor->getProviderCreateDescription();66if ($create_description) {67$item->appendChild($create_description);68}6970$menu->addItem($item);71}7273return $this->newDialog()74->setTitle(pht('Choose Provider Type'))75->appendChild($menu)76->addCancelButton($cancel_uri);77}7879}808182