Path: blob/master/src/applications/auth/controller/mfa/PhabricatorAuthFactorProviderViewController.php
12262 views
<?php12final class PhabricatorAuthFactorProviderViewController3extends PhabricatorAuthFactorProviderController {45public function handleRequest(AphrontRequest $request) {6$viewer = $this->getViewer();78$this->requireApplicationCapability(9AuthManageProvidersCapability::CAPABILITY);1011$provider = id(new PhabricatorAuthFactorProviderQuery())12->setViewer($viewer)13->withIDs(array($request->getURIData('id')))14->executeOne();15if (!$provider) {16return new Aphront404Response();17}1819$crumbs = $this->buildApplicationCrumbs()20->addTextCrumb($provider->getObjectName())21->setBorder(true);2223$header = $this->buildHeaderView($provider);24$properties = $this->buildPropertiesView($provider);25$curtain = $this->buildCurtain($provider);262728$timeline = $this->buildTransactionTimeline(29$provider,30new PhabricatorAuthFactorProviderTransactionQuery());31$timeline->setShouldTerminate(true);3233$view = id(new PHUITwoColumnView())34->setHeader($header)35->setCurtain($curtain)36->setMainColumn(37array(38$timeline,39))40->addPropertySection(pht('Details'), $properties);4142return $this->newPage()43->setTitle($provider->getDisplayName())44->setCrumbs($crumbs)45->setPageObjectPHIDs(46array(47$provider->getPHID(),48))49->appendChild($view);50}5152private function buildHeaderView(PhabricatorAuthFactorProvider $provider) {53$viewer = $this->getViewer();5455$view = id(new PHUIHeaderView())56->setViewer($viewer)57->setHeader($provider->getDisplayName())58->setPolicyObject($provider);5960$status = $provider->newStatus();6162$header_icon = $status->getStatusHeaderIcon();63$header_color = $status->getStatusHeaderColor();64$header_name = $status->getName();65if ($header_icon !== null) {66$view->setStatus($header_icon, $header_color, $header_name);67}6869return $view;70}7172private function buildPropertiesView(73PhabricatorAuthFactorProvider $provider) {74$viewer = $this->getViewer();7576$view = id(new PHUIPropertyListView())77->setViewer($viewer);7879$view->addProperty(80pht('Factor Type'),81$provider->getFactor()->getFactorName());828384$custom_enroll = $provider->getEnrollMessage();85if ($custom_enroll !== null && strlen($custom_enroll)) {86$view->addSectionHeader(87pht('Custom Enroll Message'),88PHUIPropertyListView::ICON_SUMMARY);89$view->addTextContent(90new PHUIRemarkupView($viewer, $custom_enroll));91}9293return $view;94}9596private function buildCurtain(PhabricatorAuthFactorProvider $provider) {97$viewer = $this->getViewer();98$id = $provider->getID();99100$can_edit = PhabricatorPolicyFilter::hasCapability(101$viewer,102$provider,103PhabricatorPolicyCapability::CAN_EDIT);104105$curtain = $this->newCurtainView($provider);106107$curtain->addAction(108id(new PhabricatorActionView())109->setName(pht('Edit MFA Provider'))110->setIcon('fa-pencil')111->setHref($this->getApplicationURI("mfa/edit/{$id}/"))112->setDisabled(!$can_edit)113->setWorkflow(!$can_edit));114115$curtain->addAction(116id(new PhabricatorActionView())117->setName(pht('Customize Enroll Message'))118->setIcon('fa-commenting-o')119->setHref($this->getApplicationURI("mfa/message/{$id}/"))120->setDisabled(!$can_edit)121->setWorkflow(true));122123return $curtain;124}125126}127128129