Path: blob/master/src/applications/auth/controller/config/PhabricatorAuthProviderViewController.php
12261 views
<?php12final class PhabricatorAuthProviderViewController3extends PhabricatorAuthProviderConfigController {45public function handleRequest(AphrontRequest $request) {6$this->requireApplicationCapability(7AuthManageProvidersCapability::CAPABILITY);89$viewer = $this->getViewer();10$id = $request->getURIData('id');1112$config = id(new PhabricatorAuthProviderConfigQuery())13->setViewer($viewer)14->requireCapabilities(15array(16PhabricatorPolicyCapability::CAN_VIEW,17PhabricatorPolicyCapability::CAN_EDIT,18))19->withIDs(array($id))20->executeOne();21if (!$config) {22return new Aphront404Response();23}2425$header = $this->buildHeaderView($config);26$properties = $this->buildPropertiesView($config);27$curtain = $this->buildCurtain($config);2829$timeline = $this->buildTransactionTimeline(30$config,31new PhabricatorAuthProviderConfigTransactionQuery());32$timeline->setShouldTerminate(true);3334$view = id(new PHUITwoColumnView())35->setHeader($header)36->setCurtain($curtain)37->addPropertySection(pht('Details'), $properties)38->setMainColumn($timeline);3940$crumbs = $this->buildApplicationCrumbs()41->addTextCrumb($config->getObjectName())42->setBorder(true);4344return $this->newPage()45->setTitle(pht('Auth Provider: %s', $config->getDisplayName()))46->setCrumbs($crumbs)47->appendChild($view);48}4950private function buildHeaderView(PhabricatorAuthProviderConfig $config) {51$viewer = $this->getViewer();5253$view = id(new PHUIHeaderView())54->setViewer($viewer)55->setHeader($config->getDisplayName());5657if ($config->getIsEnabled()) {58$view->setStatus('fa-check', 'bluegrey', pht('Enabled'));59} else {60$view->setStatus('fa-ban', 'red', pht('Disabled'));61}6263return $view;64}6566private function buildCurtain(PhabricatorAuthProviderConfig $config) {67$viewer = $this->getViewer();68$id = $config->getID();6970$can_edit = PhabricatorPolicyFilter::hasCapability(71$viewer,72$config,73PhabricatorPolicyCapability::CAN_EDIT);7475$curtain = $this->newCurtainView($config);7677$curtain->addAction(78id(new PhabricatorActionView())79->setName(pht('Edit Auth Provider'))80->setIcon('fa-pencil')81->setHref($this->getApplicationURI("config/edit/{$id}/"))82->setDisabled(!$can_edit)83->setWorkflow(!$can_edit));8485if ($config->getIsEnabled()) {86$disable_uri = $this->getApplicationURI('config/disable/'.$id.'/');87$disable_icon = 'fa-ban';88$disable_text = pht('Disable Provider');89} else {90$disable_uri = $this->getApplicationURI('config/enable/'.$id.'/');91$disable_icon = 'fa-check';92$disable_text = pht('Enable Provider');93}9495$curtain->addAction(96id(new PhabricatorActionView())97->setName($disable_text)98->setIcon($disable_icon)99->setHref($disable_uri)100->setDisabled(!$can_edit)101->setWorkflow(true));102103return $curtain;104}105106private function buildPropertiesView(PhabricatorAuthProviderConfig $config) {107$viewer = $this->getViewer();108109$view = id(new PHUIPropertyListView())110->setViewer($viewer);111112$view->addProperty(113pht('Provider Type'),114$config->getProvider()->getProviderName());115116$status = $this->buildStatus($config);117$view->addProperty(pht('Status'), $status);118119return $view;120}121122private function buildStatus(PhabricatorAuthProviderConfig $config) {123$viewer = $this->getViewer();124$view = id(new PHUIStatusListView())125->setViewer($viewer);126127$icon_enabled = PHUIStatusItemView::ICON_ACCEPT;128$icon_disabled = PHUIStatusItemView::ICON_REJECT;129130$icon_map = array(131true => $icon_enabled,132false => $icon_disabled,133);134135$color_map = array(136true => 'green',137false => 'red',138);139140$provider = $config->getProvider();141142$view->addItem(143id(new PHUIStatusItemView())144->setIcon(145$icon_map[$config->getIsEnabled()],146$color_map[$config->getIsEnabled()])147->setTarget(pht('Provider Enabled')));148149$view->addItem(150id(new PHUIStatusItemView())151->setIcon(152$icon_map[$config->getShouldAllowLogin()],153$color_map[$config->getShouldAllowLogin()])154->setTarget(pht('Allow Logins')));155156$view->addItem(157id(new PHUIStatusItemView())158->setIcon(159$icon_map[$config->getShouldAllowRegistration()],160$color_map[$config->getShouldAllowRegistration()])161->setTarget(pht('Allow Registration')));162163$view->addItem(164id(new PHUIStatusItemView())165->setIcon(166$icon_map[$config->getShouldAllowLink()],167$color_map[$config->getShouldAllowLink()])168->setTarget(pht('Allow Account Linking')));169170$view->addItem(171id(new PHUIStatusItemView())172->setIcon(173$icon_map[$config->getShouldAllowUnlink()],174$color_map[$config->getShouldAllowUnlink()])175->setTarget(pht('Allow Account Unlinking')));176177if ($provider->shouldAllowEmailTrustConfiguration()) {178$view->addItem(179id(new PHUIStatusItemView())180->setIcon(181$icon_map[$config->getShouldTrustEmails()],182$color_map[$config->getShouldTrustEmails()])183->setTarget(pht('Trust Email Addresses')));184}185186if ($provider->supportsAutoLogin()) {187$view->addItem(188id(new PHUIStatusItemView())189->setIcon(190$icon_map[$config->getShouldAutoLogin()],191$color_map[$config->getShouldAutoLogin()])192->setTarget(pht('Allow Auto Login')));193}194195return $view;196}197198}199200201