mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-29 18:22:41 +01:00
Add Disqus, Facebook, Google, GitHub auth config; AWS config
Summary: Also improve behavior for the "unknown config" warning. Test Plan: Looked at configs, went through unknown config workflow. Reviewers: btrahan, codeblock Reviewed By: btrahan CC: aran Maniphest Tasks: T2255 Differential Revision: https://secure.phabricator.com/D4310
This commit is contained in:
parent
a3bff35b2b
commit
8a52a6d585
11 changed files with 348 additions and 34 deletions
|
@ -569,6 +569,7 @@ phutil_register_library_map(array(
|
||||||
'PackageMail' => 'applications/owners/mail/PackageMail.php',
|
'PackageMail' => 'applications/owners/mail/PackageMail.php',
|
||||||
'PackageModifyMail' => 'applications/owners/mail/PackageModifyMail.php',
|
'PackageModifyMail' => 'applications/owners/mail/PackageModifyMail.php',
|
||||||
'Phabricator404Controller' => 'applications/base/controller/Phabricator404Controller.php',
|
'Phabricator404Controller' => 'applications/base/controller/Phabricator404Controller.php',
|
||||||
|
'PhabricatorAWSConfigOptions' => 'applications/config/option/PhabricatorAWSConfigOptions.php',
|
||||||
'PhabricatorAccessLog' => 'infrastructure/PhabricatorAccessLog.php',
|
'PhabricatorAccessLog' => 'infrastructure/PhabricatorAccessLog.php',
|
||||||
'PhabricatorAccessLogConfigOptions' => 'applications/config/option/PhabricatorAccessLogConfigOptions.php',
|
'PhabricatorAccessLogConfigOptions' => 'applications/config/option/PhabricatorAccessLogConfigOptions.php',
|
||||||
'PhabricatorActionListExample' => 'applications/uiexample/examples/PhabricatorActionListExample.php',
|
'PhabricatorActionListExample' => 'applications/uiexample/examples/PhabricatorActionListExample.php',
|
||||||
|
@ -734,6 +735,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorDirectoryController' => 'applications/directory/controller/PhabricatorDirectoryController.php',
|
'PhabricatorDirectoryController' => 'applications/directory/controller/PhabricatorDirectoryController.php',
|
||||||
'PhabricatorDirectoryMainController' => 'applications/directory/controller/PhabricatorDirectoryMainController.php',
|
'PhabricatorDirectoryMainController' => 'applications/directory/controller/PhabricatorDirectoryMainController.php',
|
||||||
'PhabricatorDisabledUserController' => 'applications/auth/controller/PhabricatorDisabledUserController.php',
|
'PhabricatorDisabledUserController' => 'applications/auth/controller/PhabricatorDisabledUserController.php',
|
||||||
|
'PhabricatorDisqusConfigOptions' => 'applications/config/option/PhabricatorDisqusConfigOptions.php',
|
||||||
'PhabricatorDraft' => 'applications/draft/storage/PhabricatorDraft.php',
|
'PhabricatorDraft' => 'applications/draft/storage/PhabricatorDraft.php',
|
||||||
'PhabricatorDraftDAO' => 'applications/draft/storage/PhabricatorDraftDAO.php',
|
'PhabricatorDraftDAO' => 'applications/draft/storage/PhabricatorDraftDAO.php',
|
||||||
'PhabricatorEdgeConfig' => 'infrastructure/edges/constants/PhabricatorEdgeConfig.php',
|
'PhabricatorEdgeConfig' => 'infrastructure/edges/constants/PhabricatorEdgeConfig.php',
|
||||||
|
@ -755,6 +757,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorEventEngine' => 'infrastructure/events/PhabricatorEventEngine.php',
|
'PhabricatorEventEngine' => 'infrastructure/events/PhabricatorEventEngine.php',
|
||||||
'PhabricatorEventType' => 'infrastructure/events/constant/PhabricatorEventType.php',
|
'PhabricatorEventType' => 'infrastructure/events/constant/PhabricatorEventType.php',
|
||||||
'PhabricatorExampleEventListener' => 'infrastructure/events/PhabricatorExampleEventListener.php',
|
'PhabricatorExampleEventListener' => 'infrastructure/events/PhabricatorExampleEventListener.php',
|
||||||
|
'PhabricatorFacebookConfigOptions' => 'applications/config/option/PhabricatorFacebookConfigOptions.php',
|
||||||
'PhabricatorFactAggregate' => 'applications/fact/storage/PhabricatorFactAggregate.php',
|
'PhabricatorFactAggregate' => 'applications/fact/storage/PhabricatorFactAggregate.php',
|
||||||
'PhabricatorFactChartController' => 'applications/fact/controller/PhabricatorFactChartController.php',
|
'PhabricatorFactChartController' => 'applications/fact/controller/PhabricatorFactChartController.php',
|
||||||
'PhabricatorFactController' => 'applications/fact/controller/PhabricatorFactController.php',
|
'PhabricatorFactController' => 'applications/fact/controller/PhabricatorFactController.php',
|
||||||
|
@ -836,8 +839,10 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorFormExample' => 'applications/uiexample/examples/PhabricatorFormExample.php',
|
'PhabricatorFormExample' => 'applications/uiexample/examples/PhabricatorFormExample.php',
|
||||||
'PhabricatorGarbageCollectorDaemon' => 'infrastructure/daemon/PhabricatorGarbageCollectorDaemon.php',
|
'PhabricatorGarbageCollectorDaemon' => 'infrastructure/daemon/PhabricatorGarbageCollectorDaemon.php',
|
||||||
'PhabricatorGitGraphStream' => 'applications/repository/daemon/PhabricatorGitGraphStream.php',
|
'PhabricatorGitGraphStream' => 'applications/repository/daemon/PhabricatorGitGraphStream.php',
|
||||||
|
'PhabricatorGitHubConfigOptions' => 'applications/config/option/PhabricatorGitHubConfigOptions.php',
|
||||||
'PhabricatorGlobalLock' => 'infrastructure/util/PhabricatorGlobalLock.php',
|
'PhabricatorGlobalLock' => 'infrastructure/util/PhabricatorGlobalLock.php',
|
||||||
'PhabricatorGlobalUploadTargetView' => 'applications/files/view/PhabricatorGlobalUploadTargetView.php',
|
'PhabricatorGlobalUploadTargetView' => 'applications/files/view/PhabricatorGlobalUploadTargetView.php',
|
||||||
|
'PhabricatorGoogleConfigOptions' => 'applications/config/option/PhabricatorGoogleConfigOptions.php',
|
||||||
'PhabricatorHandleObjectSelectorDataView' => 'applications/phid/handle/view/PhabricatorHandleObjectSelectorDataView.php',
|
'PhabricatorHandleObjectSelectorDataView' => 'applications/phid/handle/view/PhabricatorHandleObjectSelectorDataView.php',
|
||||||
'PhabricatorHash' => 'infrastructure/util/PhabricatorHash.php',
|
'PhabricatorHash' => 'infrastructure/util/PhabricatorHash.php',
|
||||||
'PhabricatorHashTestCase' => 'infrastructure/util/__tests__/PhabricatorHashTestCase.php',
|
'PhabricatorHashTestCase' => 'infrastructure/util/__tests__/PhabricatorHashTestCase.php',
|
||||||
|
@ -1887,6 +1892,7 @@ phutil_register_library_map(array(
|
||||||
'PackageDeleteMail' => 'PackageMail',
|
'PackageDeleteMail' => 'PackageMail',
|
||||||
'PackageModifyMail' => 'PackageMail',
|
'PackageModifyMail' => 'PackageMail',
|
||||||
'Phabricator404Controller' => 'PhabricatorController',
|
'Phabricator404Controller' => 'PhabricatorController',
|
||||||
|
'PhabricatorAWSConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorAccessLogConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
'PhabricatorAccessLogConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorActionListExample' => 'PhabricatorUIExample',
|
'PhabricatorActionListExample' => 'PhabricatorUIExample',
|
||||||
'PhabricatorActionListView' => 'AphrontView',
|
'PhabricatorActionListView' => 'AphrontView',
|
||||||
|
@ -2025,7 +2031,11 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorConfigLocalSource' => 'PhabricatorConfigProxySource',
|
'PhabricatorConfigLocalSource' => 'PhabricatorConfigProxySource',
|
||||||
'PhabricatorConfigManagementSetWorkflow' => 'PhabricatorConfigManagementWorkflow',
|
'PhabricatorConfigManagementSetWorkflow' => 'PhabricatorConfigManagementWorkflow',
|
||||||
'PhabricatorConfigManagementWorkflow' => 'PhutilArgumentWorkflow',
|
'PhabricatorConfigManagementWorkflow' => 'PhutilArgumentWorkflow',
|
||||||
'PhabricatorConfigOption' => 'Phobject',
|
'PhabricatorConfigOption' =>
|
||||||
|
array(
|
||||||
|
0 => 'Phobject',
|
||||||
|
1 => 'PhabricatorMarkupInterface',
|
||||||
|
),
|
||||||
'PhabricatorConfigProxySource' => 'PhabricatorConfigSource',
|
'PhabricatorConfigProxySource' => 'PhabricatorConfigSource',
|
||||||
'PhabricatorConfigStackSource' => 'PhabricatorConfigSource',
|
'PhabricatorConfigStackSource' => 'PhabricatorConfigSource',
|
||||||
'PhabricatorContentSourceView' => 'AphrontView',
|
'PhabricatorContentSourceView' => 'AphrontView',
|
||||||
|
@ -2059,6 +2069,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorDirectoryController' => 'PhabricatorController',
|
'PhabricatorDirectoryController' => 'PhabricatorController',
|
||||||
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
|
'PhabricatorDirectoryMainController' => 'PhabricatorDirectoryController',
|
||||||
'PhabricatorDisabledUserController' => 'PhabricatorAuthController',
|
'PhabricatorDisabledUserController' => 'PhabricatorAuthController',
|
||||||
|
'PhabricatorDisqusConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorDraft' => 'PhabricatorDraftDAO',
|
'PhabricatorDraft' => 'PhabricatorDraftDAO',
|
||||||
'PhabricatorDraftDAO' => 'PhabricatorLiskDAO',
|
'PhabricatorDraftDAO' => 'PhabricatorLiskDAO',
|
||||||
'PhabricatorEdgeConfig' => 'PhabricatorEdgeConstants',
|
'PhabricatorEdgeConfig' => 'PhabricatorEdgeConstants',
|
||||||
|
@ -2077,6 +2088,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorEvent' => 'PhutilEvent',
|
'PhabricatorEvent' => 'PhutilEvent',
|
||||||
'PhabricatorEventType' => 'PhutilEventType',
|
'PhabricatorEventType' => 'PhutilEventType',
|
||||||
'PhabricatorExampleEventListener' => 'PhutilEventListener',
|
'PhabricatorExampleEventListener' => 'PhutilEventListener',
|
||||||
|
'PhabricatorFacebookConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorFactAggregate' => 'PhabricatorFactDAO',
|
'PhabricatorFactAggregate' => 'PhabricatorFactDAO',
|
||||||
'PhabricatorFactChartController' => 'PhabricatorFactController',
|
'PhabricatorFactChartController' => 'PhabricatorFactController',
|
||||||
'PhabricatorFactController' => 'PhabricatorController',
|
'PhabricatorFactController' => 'PhabricatorController',
|
||||||
|
@ -2156,8 +2168,10 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorFlagsUIEventListener' => 'PhutilEventListener',
|
'PhabricatorFlagsUIEventListener' => 'PhutilEventListener',
|
||||||
'PhabricatorFormExample' => 'PhabricatorUIExample',
|
'PhabricatorFormExample' => 'PhabricatorUIExample',
|
||||||
'PhabricatorGarbageCollectorDaemon' => 'PhabricatorDaemon',
|
'PhabricatorGarbageCollectorDaemon' => 'PhabricatorDaemon',
|
||||||
|
'PhabricatorGitHubConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorGlobalLock' => 'PhutilLock',
|
'PhabricatorGlobalLock' => 'PhutilLock',
|
||||||
'PhabricatorGlobalUploadTargetView' => 'AphrontView',
|
'PhabricatorGlobalUploadTargetView' => 'AphrontView',
|
||||||
|
'PhabricatorGoogleConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorHashTestCase' => 'PhabricatorTestCase',
|
'PhabricatorHashTestCase' => 'PhabricatorTestCase',
|
||||||
'PhabricatorHeaderView' => 'AphrontView',
|
'PhabricatorHeaderView' => 'AphrontView',
|
||||||
'PhabricatorHelpController' => 'PhabricatorController',
|
'PhabricatorHelpController' => 'PhabricatorController',
|
||||||
|
|
|
@ -15,9 +15,10 @@ final class PhabricatorSetupCheckExtraConfig extends PhabricatorSetupCheck {
|
||||||
}
|
}
|
||||||
$summary = pht("This option is not recognized. It may be misspelled.");
|
$summary = pht("This option is not recognized. It may be misspelled.");
|
||||||
$message = pht(
|
$message = pht(
|
||||||
"This configuration option is not recognized. It may be misspelled, ".
|
"The configuration option '%s' is not recognized. It may be ".
|
||||||
"or it might have existed in an older version of Phabricator. It has ".
|
"misspelled, or it might have existed in an older version of ".
|
||||||
"no effect, and should be corrected or deleted.");
|
"Phabricator. It has no effect, and should be corrected or deleted.",
|
||||||
|
$key);
|
||||||
|
|
||||||
$this
|
$this
|
||||||
->newIssue('config.unknown.'.$key)
|
->newIssue('config.unknown.'.$key)
|
||||||
|
|
|
@ -16,11 +16,24 @@ final class PhabricatorConfigEditController
|
||||||
|
|
||||||
$options = PhabricatorApplicationConfigOptions::loadAllOptions();
|
$options = PhabricatorApplicationConfigOptions::loadAllOptions();
|
||||||
if (empty($options[$this->key])) {
|
if (empty($options[$this->key])) {
|
||||||
return new Aphront404Response();
|
// This may be a dead config entry, which existed in the past but no
|
||||||
}
|
// longer exists. Allow it to be edited so it can be reviewed and
|
||||||
|
// deleted.
|
||||||
|
$option = id(new PhabricatorConfigOption())
|
||||||
|
->setKey($this->key)
|
||||||
|
->setType('wild')
|
||||||
|
->setDefault(null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
"This configuration option is unknown. It may be misspelled, ".
|
||||||
|
"or have existed in a previous version of Phabricator."));
|
||||||
|
$group = null;
|
||||||
|
$group_uri = $this->getApplicationURI();
|
||||||
|
} else {
|
||||||
$option = $options[$this->key];
|
$option = $options[$this->key];
|
||||||
$group = $option->getGroup();
|
$group = $option->getGroup();
|
||||||
$group_uri = $this->getApplicationURI('group/'.$group->getKey().'/');
|
$group_uri = $this->getApplicationURI('group/'.$group->getKey().'/');
|
||||||
|
}
|
||||||
|
|
||||||
$issue = $request->getStr('issue');
|
$issue = $request->getStr('issue');
|
||||||
if ($issue) {
|
if ($issue) {
|
||||||
|
@ -127,16 +140,19 @@ final class PhabricatorConfigEditController
|
||||||
$short = pht('Edit');
|
$short = pht('Edit');
|
||||||
|
|
||||||
$crumbs = $this->buildApplicationCrumbs();
|
$crumbs = $this->buildApplicationCrumbs();
|
||||||
$crumbs
|
$crumbs->addCrumb(
|
||||||
->addCrumb(
|
|
||||||
id(new PhabricatorCrumbView())
|
id(new PhabricatorCrumbView())
|
||||||
->setName(pht('Config'))
|
->setName(pht('Config'))
|
||||||
->setHref($this->getApplicationURI()))
|
->setHref($this->getApplicationURI()));
|
||||||
->addCrumb(
|
|
||||||
|
if ($group) {
|
||||||
|
$crumbs->addCrumb(
|
||||||
id(new PhabricatorCrumbView())
|
id(new PhabricatorCrumbView())
|
||||||
->setName($group->getName())
|
->setName($group->getName())
|
||||||
->setHref($group_uri))
|
->setHref($group_uri));
|
||||||
->addCrumb(
|
}
|
||||||
|
|
||||||
|
$crumbs->addCrumb(
|
||||||
id(new PhabricatorCrumbView())
|
id(new PhabricatorCrumbView())
|
||||||
->setName($this->key)
|
->setName($this->key)
|
||||||
->setHref('/config/edit/'.$this->key));
|
->setHref('/config/edit/'.$this->key));
|
||||||
|
|
|
@ -13,8 +13,6 @@ final class PhabricatorConfigIssueViewController
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$user = $request->getUser();
|
$user = $request->getUser();
|
||||||
|
|
||||||
$nav = $this->buildSideNavView();
|
|
||||||
|
|
||||||
$issues = PhabricatorSetupCheck::runAllChecks();
|
$issues = PhabricatorSetupCheck::runAllChecks();
|
||||||
PhabricatorSetupCheck::setOpenSetupIssueCount(count($issues));
|
PhabricatorSetupCheck::setOpenSetupIssueCount(count($issues));
|
||||||
|
|
||||||
|
@ -37,10 +35,8 @@ final class PhabricatorConfigIssueViewController
|
||||||
$title = $issue->getShortName();
|
$title = $issue->getShortName();
|
||||||
}
|
}
|
||||||
|
|
||||||
$nav->appendChild($content);
|
|
||||||
|
|
||||||
$crumbs = $this
|
$crumbs = $this
|
||||||
->buildApplicationCrumbs($nav)
|
->buildApplicationCrumbs()
|
||||||
->addCrumb(
|
->addCrumb(
|
||||||
id(new PhabricatorCrumbView())
|
id(new PhabricatorCrumbView())
|
||||||
->setName(pht('Setup Issues'))
|
->setName(pht('Setup Issues'))
|
||||||
|
@ -50,10 +46,11 @@ final class PhabricatorConfigIssueViewController
|
||||||
->setName($title)
|
->setName($title)
|
||||||
->setHref($request->getRequestURI()));
|
->setHref($request->getRequestURI()));
|
||||||
|
|
||||||
$nav->setCrumbs($crumbs);
|
|
||||||
|
|
||||||
return $this->buildApplicationPage(
|
return $this->buildApplicationPage(
|
||||||
$nav,
|
array(
|
||||||
|
$crumbs,
|
||||||
|
$content,
|
||||||
|
),
|
||||||
array(
|
array(
|
||||||
'title' => $title,
|
'title' => $title,
|
||||||
'device' => true,
|
'device' => true,
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorAWSConfigOptions
|
||||||
|
extends PhabricatorApplicationConfigOptions {
|
||||||
|
|
||||||
|
public function getName() {
|
||||||
|
return pht("Amazon Web Services");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription() {
|
||||||
|
return pht("Configure integration with AWS (EC2, SES, S3, etc).");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOptions() {
|
||||||
|
return array(
|
||||||
|
$this->newOption('amazon-ses.access-key', 'string', null)
|
||||||
|
->setDescription(pht('Access key for Amazon SES.')),
|
||||||
|
$this->newOption('amazon-ses.secret-key', 'string', null)
|
||||||
|
->setDescription(pht('Secret key for Amazon SES.')),
|
||||||
|
$this->newOption('amazon-s3.access-key', 'string', null)
|
||||||
|
->setDescription(pht('Access key for Amazon S3.')),
|
||||||
|
$this->newOption('amazon-s3.secret-key', 'string', null)
|
||||||
|
->setDescription(pht('Secret key for Amazon S3.')),
|
||||||
|
$this->newOption('amazon-s3.endpoint', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Explicit S3 endpoint to use. Leave empty to have Phabricator '.
|
||||||
|
'select and endpoint. Normally, you do not need to set this.'))
|
||||||
|
->addExample(null, 'Use default endpoint')
|
||||||
|
->addExample('s3.amazon.com', 'Use specific endpoint'),
|
||||||
|
$this->newOption('amazon-ec2.access-key', 'string', null)
|
||||||
|
->setDescription(pht('Access key for Amazon EC2.')),
|
||||||
|
$this->newOption('amazon-ec2.secret-key', 'string', null)
|
||||||
|
->setDescription(pht('Secret key for Amazon EC2.')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -64,6 +64,9 @@ final class PhabricatorConfigOption
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getSummary() {
|
public function getSummary() {
|
||||||
|
if (empty($this->summary)) {
|
||||||
|
return $this->getDescription();
|
||||||
|
}
|
||||||
return $this->summary;
|
return $this->summary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorDisqusConfigOptions
|
||||||
|
extends PhabricatorApplicationConfigOptions {
|
||||||
|
|
||||||
|
public function getName() {
|
||||||
|
return pht("Integration with Disqus");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription() {
|
||||||
|
return pht("Disqus authentication and integration options.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOptions() {
|
||||||
|
return array(
|
||||||
|
$this->newOption('disqus.auth-enabled', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Disable Disqus Authentication"),
|
||||||
|
pht("Enable Disqus Authentication"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Allow users to login to Phabricator using Disqus credentials.')),
|
||||||
|
$this->newOption('disqus.registration-enabled', 'bool', true)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Disable Disqus Registration"),
|
||||||
|
pht("Enable Disqus Registration"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Allow users to create new Phabricator accounts using Disqus '.
|
||||||
|
'credentials.')),
|
||||||
|
$this->newOption('disqus.auth-permanent', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Allow Disqus Account Unlinking"),
|
||||||
|
pht("Permanently Bind Disqus Accounts"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Are Phabricator accounts permanently bound to Disqus '.
|
||||||
|
'accounts?')),
|
||||||
|
$this->newOption('disqus.application-id', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Disqus "Client ID" to use for Disqus API access.')),
|
||||||
|
$this->newOption('disqus.application-secret', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Disqus "Secret" to use for Diqsus API access.')),
|
||||||
|
$this->newOption('disqus.shortname', 'string', null)
|
||||||
|
->setSummary(pht("Shortname for Disqus comment widget."))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
"Website shortname to use for Disqus comment widget in Phame. ".
|
||||||
|
"For more information, see:\n\n".
|
||||||
|
"[[http://docs.disqus.com/help/4/ | Disqus Quick Start Guide]]\n".
|
||||||
|
"[[http://docs.disqus.com/help/68/ | Information on Shortnames]]")),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorFacebookConfigOptions
|
||||||
|
extends PhabricatorApplicationConfigOptions {
|
||||||
|
|
||||||
|
public function getName() {
|
||||||
|
return pht("Integration with Facebook");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription() {
|
||||||
|
return pht("Facebook authentication and integration options.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOptions() {
|
||||||
|
return array(
|
||||||
|
$this->newOption('facebook.auth-enabled', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Disable Facebook Authentication"),
|
||||||
|
pht("Enable Facebook Authentication"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Allow users to login to Phabricator using Facebook credentials.')),
|
||||||
|
$this->newOption('facebook.registration-enabled', 'bool', true)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Disable Facebook Registration"),
|
||||||
|
pht("Enable Facebook Registration"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Allow users to create new Phabricator accounts using Facebook '.
|
||||||
|
'credentials.')),
|
||||||
|
$this->newOption('facebook.auth-permanent', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Allow Facebook Account Unlinking"),
|
||||||
|
pht("Permanently Bind Facebook Accounts"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Are Phabricator accounts permanently bound to Facebook '.
|
||||||
|
'accounts?')),
|
||||||
|
$this->newOption('facebook.application-id', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Facebook "Application ID" to use for Facebook API access.')),
|
||||||
|
$this->newOption('facebook.application-secret', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Facebook "Application Secret" to use for Facebook API access.')),
|
||||||
|
$this->newOption('facebook.require-https-auth', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Do Not Require HTTPS"),
|
||||||
|
pht("Require HTTPS"),
|
||||||
|
))
|
||||||
|
->setSummary(
|
||||||
|
pht(
|
||||||
|
'Reject Facebook logins from accounts that do not have Facebook '.
|
||||||
|
'configured in HTTPS-only mode.'))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'You can require users logging in via Facebook auth have Facebook '.
|
||||||
|
'set to HTTPS-only, which ensures their Facebook cookies are '.
|
||||||
|
'SSL-only. This makes it more difficult for an attacker to '.
|
||||||
|
'escalate a cookie-sniffing attack which captures Facebook '.
|
||||||
|
'credentials into Phabricator access, but will require users '.
|
||||||
|
'change their Facebook settings if they do not have this mode '.
|
||||||
|
'enabled.')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorGitHubConfigOptions
|
||||||
|
extends PhabricatorApplicationConfigOptions {
|
||||||
|
|
||||||
|
public function getName() {
|
||||||
|
return pht("Integration with GitHub");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription() {
|
||||||
|
return pht("GitHub authentication and integration options.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOptions() {
|
||||||
|
return array(
|
||||||
|
$this->newOption('github.auth-enabled', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Disable GitHub Authentication"),
|
||||||
|
pht("Enable GitHub Authentication"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Allow users to login to Phabricator using GitHub credentials.')),
|
||||||
|
$this->newOption('github.registration-enabled', 'bool', true)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Disable GitHub Registration"),
|
||||||
|
pht("Enable GitHub Registration"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Allow users to create new Phabricator accounts using GitHub '.
|
||||||
|
'credentials.')),
|
||||||
|
$this->newOption('github.auth-permanent', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Allow GitHub Account Unlinking"),
|
||||||
|
pht("Permanently Bind GitHub Accounts"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Are Phabricator accounts permanently bound to GitHub '.
|
||||||
|
'accounts?')),
|
||||||
|
$this->newOption('github.application-id', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'GitHub "Client ID" to use for GitHub API access.')),
|
||||||
|
$this->newOption('github.application-secret', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'GitHub "Secret" to use for GitHub API access.')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorGoogleConfigOptions
|
||||||
|
extends PhabricatorApplicationConfigOptions {
|
||||||
|
|
||||||
|
public function getName() {
|
||||||
|
return pht("Integration with Google");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDescription() {
|
||||||
|
return pht("Google authentication and integration options.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOptions() {
|
||||||
|
return array(
|
||||||
|
$this->newOption('google.auth-enabled', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Disable Google Authentication"),
|
||||||
|
pht("Enable Google Authentication"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Allow users to login to Phabricator using Google credentials.')),
|
||||||
|
$this->newOption('google.registration-enabled', 'bool', true)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Disable Google Registration"),
|
||||||
|
pht("Enable Google Registration"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Allow users to create new Phabricator accounts using Google '.
|
||||||
|
'credentials.')),
|
||||||
|
$this->newOption('google.auth-permanent', 'bool', false)
|
||||||
|
->setOptions(
|
||||||
|
array(
|
||||||
|
pht("Allow Google Account Unlinking"),
|
||||||
|
pht("Permanently Bind Google Accounts"),
|
||||||
|
))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Are Phabricator accounts permanently bound to Google '.
|
||||||
|
'accounts?')),
|
||||||
|
$this->newOption('google.application-id', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Google "Client ID" to use for Google API access.')),
|
||||||
|
$this->newOption('google.application-secret', 'string', null)
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
'Google "Secret" to use for Google API access.')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -7,13 +7,7 @@ final class PhabricatorConfigEntry extends PhabricatorConfigEntryDAO {
|
||||||
protected $namespace;
|
protected $namespace;
|
||||||
protected $configKey;
|
protected $configKey;
|
||||||
protected $value;
|
protected $value;
|
||||||
|
protected $isDeleted;
|
||||||
// TODO: Remove this default when implementing Transactions.
|
|
||||||
protected $isDeleted = 0;
|
|
||||||
|
|
||||||
public function getURI() {
|
|
||||||
return '/config/edit/'.$this->configKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getConfiguration() {
|
public function getConfiguration() {
|
||||||
return array(
|
return array(
|
||||||
|
|
Loading…
Reference in a new issue