1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-23 05:50:55 +01:00

Add Disqus OAuth to new flows

Summary: Ref T1536. Adds Disqus as a Provider.

Test Plan: Registered and logged in with Disqus.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T1536

Differential Revision: https://secure.phabricator.com/D6165
This commit is contained in:
epriestley 2013-06-16 10:16:14 -07:00
parent 1329b7b51e
commit a12a6d5c7d
5 changed files with 68 additions and 7 deletions

View file

@ -818,6 +818,7 @@ phutil_register_library_map(array(
'PhabricatorAuthLoginController' => 'applications/auth/controller/PhabricatorAuthLoginController.php',
'PhabricatorAuthProvider' => 'applications/auth/provider/PhabricatorAuthProvider.php',
'PhabricatorAuthProviderOAuth' => 'applications/auth/provider/PhabricatorAuthProviderOAuth.php',
'PhabricatorAuthProviderOAuthDisqus' => 'applications/auth/provider/PhabricatorAuthProviderOAuthDisqus.php',
'PhabricatorAuthProviderOAuthFacebook' => 'applications/auth/provider/PhabricatorAuthProviderOAuthFacebook.php',
'PhabricatorAuthProviderPassword' => 'applications/auth/provider/PhabricatorAuthProviderPassword.php',
'PhabricatorAuthRegisterController' => 'applications/auth/controller/PhabricatorAuthRegisterController.php',
@ -2678,6 +2679,7 @@ phutil_register_library_map(array(
'PhabricatorAuthController' => 'PhabricatorController',
'PhabricatorAuthLoginController' => 'PhabricatorAuthController',
'PhabricatorAuthProviderOAuth' => 'PhabricatorAuthProvider',
'PhabricatorAuthProviderOAuthDisqus' => 'PhabricatorAuthProviderOAuth',
'PhabricatorAuthProviderOAuthFacebook' => 'PhabricatorAuthProviderOAuth',
'PhabricatorAuthProviderPassword' => 'PhabricatorAuthProvider',
'PhabricatorAuthRegisterController' => 'PhabricatorAuthController',

View file

@ -54,7 +54,12 @@ abstract class PhabricatorAuthProvider {
abstract public function getProviderName();
abstract public function getAdapter();
abstract public function isEnabled();
public function isEnabled() {
// TODO: Remove once we switch to the new auth stuff.
return false;
}
abstract public function shouldAllowLogin();
abstract public function shouldAllowRegistration();
abstract public function shouldAllowAccountLink();
@ -74,7 +79,7 @@ abstract class PhabricatorAuthProvider {
return;
}
protected function willRegisterAccount(PhabricatorExternalAccount $account) {
public function willRegisterAccount(PhabricatorExternalAccount $account) {
return;
}

View file

@ -18,12 +18,20 @@ abstract class PhabricatorAuthProviderOAuth extends PhabricatorAuthProvider {
}
public function isEnabled() {
return $this->getOAuthClientID() && $this->getOAuthClientSecret();
return parent::isEnabled() &&
$this->getOAuthClientID() &&
$this->getOAuthClientSecret();
}
protected function configureAdapter(PhutilAuthAdapterOAuth $adapter) {
$adapter->setClientID($this->getOAuthClientID());
$adapter->setClientSecret($this->getOAuthClientSecret());
if ($this->getOAuthClientID()) {
$adapter->setClientID($this->getOAuthClientID());
}
if ($this->getOAuthClientSecret()) {
$adapter->setClientSecret($this->getOAuthClientSecret());
}
$adapter->setRedirectURI($this->getLoginURI());
return $adapter;
}

View file

@ -0,0 +1,47 @@
<?php
final class PhabricatorAuthProviderOAuthDisqus
extends PhabricatorAuthProviderOAuth {
public function getProviderName() {
return pht('Disqus');
}
protected function newOAuthAdapter() {
return new PhutilAuthAdapterOAuthDisqus();
}
public function isEnabled() {
return parent::isEnabled() &&
PhabricatorEnv::getEnvConfig('disqus.auth-enabled');
}
protected function getOAuthClientID() {
return PhabricatorEnv::getEnvConfig('disqus.application-id');
}
protected function getOAuthClientSecret() {
$secret = PhabricatorEnv::getEnvConfig('disqus.application-secret');
if ($secret) {
return new PhutilOpaqueEnvelope($secret);
}
return null;
}
public function shouldAllowLogin() {
return true;
}
public function shouldAllowRegistration() {
return PhabricatorEnv::getEnvConfig('disqus.registration-enabled');
}
public function shouldAllowAccountLink() {
return true;
}
public function shouldAllowAccountUnlink() {
return !PhabricatorEnv::getEnvConfig('disqus.auth-permanent');
}
}

View file

@ -10,8 +10,7 @@ final class PhabricatorAuthProviderPassword
}
public function isEnabled() {
// TODO: Remove this once we switch to the new auth mechanism.
return false &&
return parent::isEnabled() &&
PhabricatorEnv::getEnvConfig('auth.password-auth-enabled');
}