Differential D20017 Diff 47814 src/applications/settings/panel/PhabricatorMultiFactorSettingsPanel.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/settings/panel/PhabricatorMultiFactorSettingsPanel.php
| Show First 20 Lines • Show All 163 Lines • ▼ Show 20 Lines | if (!$providers) { | ||||
| ->setTitle(pht('No MFA Providers')) | ->setTitle(pht('No MFA Providers')) | ||||
| ->appendParagraph( | ->appendParagraph( | ||||
| pht( | pht( | ||||
| 'There are no active MFA providers. At least one active provider '. | 'There are no active MFA providers. At least one active provider '. | ||||
| 'must be available to add new MFA factors.')) | 'must be available to add new MFA factors.')) | ||||
| ->addCancelButton($cancel_uri); | ->addCancelButton($cancel_uri); | ||||
| } | } | ||||
| $providers = mpull($providers, null, 'getPHID'); | $providers = mpull($providers, null, 'getPHID'); | ||||
| $proivders = msortv($providers, 'newSortVector'); | |||||
| $token = id(new PhabricatorAuthSessionEngine())->requireHighSecuritySession( | $token = id(new PhabricatorAuthSessionEngine())->requireHighSecuritySession( | ||||
| $viewer, | $viewer, | ||||
| $request, | $request, | ||||
| $cancel_uri); | $cancel_uri); | ||||
| $selected_phid = $request->getStr('providerPHID'); | $selected_phid = $request->getStr('providerPHID'); | ||||
| if (empty($providers[$selected_phid])) { | if (empty($providers[$selected_phid])) { | ||||
| $selected_provider = null; | $selected_provider = null; | ||||
| } else { | } else { | ||||
| $selected_provider = $providers[$selected_phid]; | $selected_provider = $providers[$selected_phid]; | ||||
| // Only let the user continue creating a factor for a given provider if | |||||
| // they actually pass the provider's checks. | |||||
| $selected_factor = $selected_provider->getFactor(); | |||||
| if (!$selected_factor->canCreateNewConfiguration($viewer)) { | |||||
| $selected_provider = null; | |||||
| } | |||||
| } | } | ||||
| if (!$selected_provider) { | if (!$selected_provider) { | ||||
| $menu = id(new PHUIObjectItemListView()) | $menu = id(new PHUIObjectItemListView()) | ||||
| ->setViewer($viewer) | ->setViewer($viewer) | ||||
| ->setBig(true) | ->setBig(true) | ||||
| ->setFlush(true); | ->setFlush(true); | ||||
| foreach ($providers as $provider_phid => $provider) { | foreach ($providers as $provider_phid => $provider) { | ||||
| $provider_uri = id(new PhutilURI($this->getPanelURI())) | $provider_uri = id(new PhutilURI($this->getPanelURI())) | ||||
| ->setQueryParam('providerPHID', $provider_phid); | ->setQueryParam('providerPHID', $provider_phid); | ||||
| $factor = $provider->getFactor(); | |||||
| $is_enabled = $factor->canCreateNewConfiguration($viewer); | |||||
| $item = id(new PHUIObjectItemView()) | $item = id(new PHUIObjectItemView()) | ||||
| ->setHeader($provider->getDisplayName()) | ->setHeader($provider->getDisplayName()) | ||||
| ->setHref($provider_uri) | |||||
| ->setClickable(true) | |||||
| ->setImageIcon($provider->newIconView()) | ->setImageIcon($provider->newIconView()) | ||||
| ->addAttribute($provider->getDisplayDescription()); | ->addAttribute($provider->getDisplayDescription()); | ||||
| if ($is_enabled) { | |||||
| $item | |||||
| ->setHref($provider_uri) | |||||
| ->setClickable(true); | |||||
| } else { | |||||
| $item->setDisabled(true); | |||||
| } | |||||
| $create_description = $factor->getConfigurationCreateDescription( | |||||
| $viewer); | |||||
| if ($create_description) { | |||||
| $item->appendChild($create_description); | |||||
| } | |||||
| $menu->addItem($item); | $menu->addItem($item); | ||||
| } | } | ||||
| return $this->newDialog() | return $this->newDialog() | ||||
| ->setTitle(pht('Choose Factor Type')) | ->setTitle(pht('Choose Factor Type')) | ||||
| ->appendChild($menu) | ->appendChild($menu) | ||||
| ->addCancelButton($cancel_uri); | ->addCancelButton($cancel_uri); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 147 Lines • Show Last 20 Lines | |||||