Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15479181
D20096.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
13 KB
Referenced Files
None
Subscribers
None
D20096.id.diff
View Options
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2335,6 +2335,7 @@
'PhabricatorAuthProviderConfigTransaction' => 'applications/auth/storage/PhabricatorAuthProviderConfigTransaction.php',
'PhabricatorAuthProviderConfigTransactionQuery' => 'applications/auth/query/PhabricatorAuthProviderConfigTransactionQuery.php',
'PhabricatorAuthProviderController' => 'applications/auth/controller/config/PhabricatorAuthProviderController.php',
+ 'PhabricatorAuthProviderViewController' => 'applications/auth/controller/config/PhabricatorAuthProviderViewController.php',
'PhabricatorAuthProvidersGuidanceContext' => 'applications/auth/guidance/PhabricatorAuthProvidersGuidanceContext.php',
'PhabricatorAuthProvidersGuidanceEngineExtension' => 'applications/auth/guidance/PhabricatorAuthProvidersGuidanceEngineExtension.php',
'PhabricatorAuthQueryPublicKeysConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthQueryPublicKeysConduitAPIMethod.php',
@@ -8094,6 +8095,7 @@
'PhabricatorAuthProviderConfigTransaction' => 'PhabricatorApplicationTransaction',
'PhabricatorAuthProviderConfigTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
'PhabricatorAuthProviderController' => 'PhabricatorAuthController',
+ 'PhabricatorAuthProviderViewController' => 'PhabricatorAuthProviderConfigController',
'PhabricatorAuthProvidersGuidanceContext' => 'PhabricatorGuidanceContext',
'PhabricatorAuthProvidersGuidanceEngineExtension' => 'PhabricatorGuidanceEngineExtension',
'PhabricatorAuthQueryPublicKeysConduitAPIMethod' => 'PhabricatorAuthConduitAPIMethod',
diff --git a/src/applications/auth/application/PhabricatorAuthApplication.php b/src/applications/auth/application/PhabricatorAuthApplication.php
--- a/src/applications/auth/application/PhabricatorAuthApplication.php
+++ b/src/applications/auth/application/PhabricatorAuthApplication.php
@@ -51,6 +51,7 @@
'edit/(?:(?P<id>\d+)/)?' => 'PhabricatorAuthEditController',
'(?P<action>enable|disable)/(?P<id>\d+)/'
=> 'PhabricatorAuthDisableController',
+ 'view/(?P<id>\d+)/' => 'PhabricatorAuthProviderViewController',
),
'login/(?P<pkey>[^/]+)/(?:(?P<extra>[^/]+)/)?'
=> 'PhabricatorAuthLoginController',
diff --git a/src/applications/auth/controller/config/PhabricatorAuthDisableController.php b/src/applications/auth/controller/config/PhabricatorAuthDisableController.php
--- a/src/applications/auth/controller/config/PhabricatorAuthDisableController.php
+++ b/src/applications/auth/controller/config/PhabricatorAuthDisableController.php
@@ -6,7 +6,8 @@
public function handleRequest(AphrontRequest $request) {
$this->requireApplicationCapability(
AuthManageProvidersCapability::CAPABILITY);
- $viewer = $request->getUser();
+
+ $viewer = $this->getViewer();
$config_id = $request->getURIData('id');
$action = $request->getURIData('action');
@@ -24,6 +25,7 @@
}
$is_enable = ($action === 'enable');
+ $done_uri = $config->getURI();
if ($request->isDialogFormPost()) {
$xactions = array();
@@ -39,8 +41,7 @@
->setContinueOnNoEffect(true)
->applyTransactions($config, $xactions);
- return id(new AphrontRedirectResponse())->setURI(
- $this->getApplicationURI());
+ return id(new AphrontRedirectResponse())->setURI($done_uri);
}
if ($is_enable) {
@@ -64,8 +65,9 @@
// account and pop a warning like "YOU WILL NO LONGER BE ABLE TO LOGIN
// YOU GOOF, YOU PROBABLY DO NOT MEAN TO DO THIS". None of this is
// critical and we can wait to see how users manage to shoot themselves
- // in the feet. Shortly, `bin/auth` will be able to recover from these
- // types of mistakes.
+ // in the feet.
+
+ // `bin/auth` can recover from these types of mistakes.
$title = pht('Disable Provider?');
$body = pht(
@@ -77,14 +79,11 @@
$button = pht('Disable Provider');
}
- $dialog = id(new AphrontDialogView())
- ->setUser($viewer)
+ return $this->newDialog()
->setTitle($title)
->appendChild($body)
- ->addCancelButton($this->getApplicationURI())
+ ->addCancelButton($done_uri)
->addSubmitButton($button);
-
- return id(new AphrontDialogResponse())->setDialog($dialog);
}
}
diff --git a/src/applications/auth/controller/config/PhabricatorAuthEditController.php b/src/applications/auth/controller/config/PhabricatorAuthEditController.php
--- a/src/applications/auth/controller/config/PhabricatorAuthEditController.php
+++ b/src/applications/auth/controller/config/PhabricatorAuthEditController.php
@@ -156,12 +156,7 @@
->setContinueOnNoEffect(true)
->applyTransactions($config, $xactions);
- if ($provider->hasSetupStep() && $is_new) {
- $id = $config->getID();
- $next_uri = $this->getApplicationURI('config/edit/'.$id.'/');
- } else {
- $next_uri = $this->getApplicationURI();
- }
+ $next_uri = $config->getURI();
return id(new AphrontRedirectResponse())->setURI($next_uri);
}
@@ -185,7 +180,7 @@
$crumb = pht('Edit Provider');
$title = pht('Edit Auth Provider');
$header_icon = 'fa-pencil';
- $cancel_uri = $this->getApplicationURI();
+ $cancel_uri = $config->getURI();
}
$header = id(new PHUIHeaderView())
@@ -348,18 +343,6 @@
$crumbs->addTextCrumb($crumb);
$crumbs->setBorder(true);
- $timeline = null;
- if (!$is_new) {
- $timeline = $this->buildTransactionTimeline(
- $config,
- new PhabricatorAuthProviderConfigTransactionQuery());
- $xactions = $timeline->getTransactions();
- foreach ($xactions as $xaction) {
- $xaction->setProvider($provider);
- }
- $timeline->setShouldTerminate(true);
- }
-
$form_box = id(new PHUIObjectBoxView())
->setHeaderText(pht('Provider'))
->setFormErrors($errors)
@@ -371,7 +354,6 @@
->setFooter(array(
$form_box,
$footer,
- $timeline,
));
return $this->newPage()
diff --git a/src/applications/auth/controller/config/PhabricatorAuthListController.php b/src/applications/auth/controller/config/PhabricatorAuthListController.php
--- a/src/applications/auth/controller/config/PhabricatorAuthListController.php
+++ b/src/applications/auth/controller/config/PhabricatorAuthListController.php
@@ -19,31 +19,18 @@
$id = $config->getID();
- $edit_uri = $this->getApplicationURI('config/edit/'.$id.'/');
- $enable_uri = $this->getApplicationURI('config/enable/'.$id.'/');
- $disable_uri = $this->getApplicationURI('config/disable/'.$id.'/');
+ $view_uri = $config->getURI();
$provider = $config->getProvider();
- if ($provider) {
- $name = $provider->getProviderName();
- } else {
- $name = $config->getProviderType().' ('.$config->getProviderClass().')';
- }
-
- $item->setHeader($name);
+ $name = $provider->getProviderName();
- if ($provider) {
- $item->setHref($edit_uri);
- } else {
- $item->addAttribute(pht('Provider Implementation Missing!'));
- }
+ $item
+ ->setHeader($name)
+ ->setHref($view_uri);
- $domain = null;
- if ($provider) {
- $domain = $provider->getProviderDomain();
- if ($domain !== 'self') {
- $item->addAttribute($domain);
- }
+ $domain = $provider->getProviderDomain();
+ if ($domain !== 'self') {
+ $item->addAttribute($domain);
}
if ($config->getShouldAllowRegistration()) {
@@ -54,21 +41,9 @@
if ($config->getIsEnabled()) {
$item->setStatusIcon('fa-check-circle green');
- $item->addAction(
- id(new PHUIListItemView())
- ->setIcon('fa-times')
- ->setHref($disable_uri)
- ->setDisabled(!$can_manage)
- ->addSigil('workflow'));
} else {
$item->setStatusIcon('fa-ban red');
$item->addIcon('fa-ban grey', pht('Disabled'));
- $item->addAction(
- id(new PHUIListItemView())
- ->setIcon('fa-plus')
- ->setHref($enable_uri)
- ->setDisabled(!$can_manage)
- ->addSigil('workflow'));
}
$list->addItem($item);
@@ -123,10 +98,11 @@
$view = id(new PHUITwoColumnView())
->setHeader($header)
- ->setFooter(array(
- $guidance,
- $list,
- ));
+ ->setFooter(
+ array(
+ $guidance,
+ $list,
+ ));
$nav = $this->newNavigation()
->setCrumbs($crumbs)
diff --git a/src/applications/auth/controller/config/PhabricatorAuthProviderViewController.php b/src/applications/auth/controller/config/PhabricatorAuthProviderViewController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/auth/controller/config/PhabricatorAuthProviderViewController.php
@@ -0,0 +1,119 @@
+<?php
+
+final class PhabricatorAuthProviderViewController
+ extends PhabricatorAuthProviderConfigController {
+
+ public function handleRequest(AphrontRequest $request) {
+ $this->requireApplicationCapability(
+ AuthManageProvidersCapability::CAPABILITY);
+
+ $viewer = $this->getViewer();
+ $id = $request->getURIData('id');
+
+ $config = id(new PhabricatorAuthProviderConfigQuery())
+ ->setViewer($viewer)
+ ->requireCapabilities(
+ array(
+ PhabricatorPolicyCapability::CAN_VIEW,
+ PhabricatorPolicyCapability::CAN_EDIT,
+ ))
+ ->withIDs(array($id))
+ ->executeOne();
+ if (!$config) {
+ return new Aphront404Response();
+ }
+
+ $header = $this->buildHeaderView($config);
+ $properties = $this->buildPropertiesView($config);
+ $curtain = $this->buildCurtain($config);
+
+ $timeline = $this->buildTransactionTimeline(
+ $config,
+ new PhabricatorAuthProviderConfigTransactionQuery());
+ $timeline->setShouldTerminate(true);
+
+ $view = id(new PHUITwoColumnView())
+ ->setHeader($header)
+ ->setCurtain($curtain)
+ ->addPropertySection(pht('Details'), $properties)
+ ->setMainColumn($timeline);
+
+ $crumbs = $this->buildApplicationCrumbs()
+ ->addTextCrumb($config->getObjectName())
+ ->setBorder(true);
+
+ return $this->newPage()
+ ->setTitle(pht('Auth Provider: %s', $config->getDisplayName()))
+ ->setCrumbs($crumbs)
+ ->appendChild($view);
+ }
+
+ private function buildHeaderView(PhabricatorAuthProviderConfig $config) {
+ $viewer = $this->getViewer();
+
+ $view = id(new PHUIHeaderView())
+ ->setViewer($viewer)
+ ->setHeader($config->getDisplayName());
+
+ if ($config->getIsEnabled()) {
+ $view->setStatus('fa-check', 'bluegrey', pht('Enabled'));
+ } else {
+ $view->setStatus('fa-ban', 'red', pht('Disabled'));
+ }
+
+ return $view;
+ }
+
+ private function buildCurtain(PhabricatorAuthProviderConfig $config) {
+ $viewer = $this->getViewer();
+ $id = $config->getID();
+
+ $can_edit = PhabricatorPolicyFilter::hasCapability(
+ $viewer,
+ $config,
+ PhabricatorPolicyCapability::CAN_EDIT);
+
+ $curtain = $this->newCurtainView($config);
+
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setName(pht('Edit Auth Provider'))
+ ->setIcon('fa-pencil')
+ ->setHref($this->getApplicationURI("config/edit/{$id}/"))
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(!$can_edit));
+
+ if ($config->getIsEnabled()) {
+ $disable_uri = $this->getApplicationURI('config/disable/'.$id.'/');
+ $disable_icon = 'fa-ban';
+ $disable_text = pht('Disable Provider');
+ } else {
+ $disable_uri = $this->getApplicationURI('config/enable/'.$id.'/');
+ $disable_icon = 'fa-check';
+ $disable_text = pht('Enable Provider');
+ }
+
+ $curtain->addAction(
+ id(new PhabricatorActionView())
+ ->setName($disable_text)
+ ->setIcon($disable_icon)
+ ->setHref($disable_uri)
+ ->setDisabled(!$can_edit)
+ ->setWorkflow(true));
+
+ return $curtain;
+ }
+
+ private function buildPropertiesView(PhabricatorAuthProviderConfig $config) {
+ $viewer = $this->getViewer();
+
+ $view = id(new PHUIPropertyListView())
+ ->setViewer($viewer);
+
+ $view->addProperty(
+ pht('Provider Type'),
+ $config->getProvider()->getProviderName());
+
+ return $view;
+ }
+}
diff --git a/src/applications/auth/query/PhabricatorAuthProviderConfigQuery.php b/src/applications/auth/query/PhabricatorAuthProviderConfigQuery.php
--- a/src/applications/auth/query/PhabricatorAuthProviderConfigQuery.php
+++ b/src/applications/auth/query/PhabricatorAuthProviderConfigQuery.php
@@ -70,6 +70,19 @@
return $where;
}
+ protected function willFilterPage(array $configs) {
+
+ foreach ($configs as $key => $config) {
+ $provider = $config->getProvider();
+ if (!$provider) {
+ unset($configs[$key]);
+ continue;
+ }
+ }
+
+ return $configs;
+ }
+
public function getQueryApplicationClass() {
return 'PhabricatorAuthApplication';
}
diff --git a/src/applications/auth/storage/PhabricatorAuthProviderConfig.php b/src/applications/auth/storage/PhabricatorAuthProviderConfig.php
--- a/src/applications/auth/storage/PhabricatorAuthProviderConfig.php
+++ b/src/applications/auth/storage/PhabricatorAuthProviderConfig.php
@@ -83,6 +83,18 @@
return $this->provider;
}
+ public function getURI() {
+ return '/auth/config/view/'.$this->getID().'/';
+ }
+
+ public function getObjectName() {
+ return pht('Auth Provider %d', $this->getID());
+ }
+
+ public function getDisplayName() {
+ return $this->getProvider()->getProviderName();
+ }
+
/* -( PhabricatorApplicationTransactionInterface )------------------------- */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Apr 9, 5:26 AM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7719150
Default Alt Text
D20096.id.diff (13 KB)
Attached To
Mode
D20096: Move the Auth Provider edit flow toward a more modern layout
Attached
Detach File
Event Timeline
Log In to Comment