1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-24 14:30:56 +01:00

Try to diagnose App Login only for OAuth providers which support it

Summary: We currently try to do "app login" for all OAuth providers, but not all of them support it in a meaningful way. Particularly, it always fails for Google.

Test Plan: Ran google diagnostics on a working config, no longer got a diagnostic failure.

Reviewers: btrahan, vrana, csilvers

Reviewed By: csilvers

CC: aran

Differential Revision: https://secure.phabricator.com/D2377
This commit is contained in:
epriestley 2012-05-04 16:16:29 -07:00
parent 049048765d
commit a122336b3e
4 changed files with 51 additions and 33 deletions

View file

@ -131,6 +131,7 @@ final class PhabricatorOAuthDiagnosticsController
} }
} }
if ($provider->shouldDiagnoseAppLogin()) {
$test_uri = new PhutilURI($provider->getTokenURI()); $test_uri = new PhutilURI($provider->getTokenURI());
$test_uri->setQueryParams( $test_uri->setQueryParams(
array( array(
@ -145,10 +146,10 @@ final class PhabricatorOAuthDiagnosticsController
$results['App Login'] = array( $results['App Login'] = array(
$res_no, $res_no,
null, null,
"Unable to perform an application login with your Application ID and ". "Unable to perform an application login with your Application ID ".
"Application Secret. You may have mistyped or misconfigured them; ". "and Application Secret. You may have mistyped or misconfigured ".
"{$name} may have revoked your authorization; or {$name} may be ". "them; {$name} may have revoked your authorization; or {$name} may ".
"having technical problems."); "be having technical problems.");
} else { } else {
if ($token_strict) { if ($token_strict) {
$results['App Login'] = array( $results['App Login'] = array(
@ -172,6 +173,7 @@ final class PhabricatorOAuthDiagnosticsController
} }
} }
} }
}
return $this->renderResults($results); return $this->renderResults($results);
} }

View file

@ -45,6 +45,14 @@ abstract class PhabricatorOAuthProvider {
return array(); return array();
} }
/**
* If the provider supports application login, the diagnostics page can try
* to test it. Most providers do not support this (Facebook does).
*/
public function shouldDiagnoseAppLogin() {
return false;
}
abstract public function getTokenURI(); abstract public function getTokenURI();
/** /**

View file

@ -118,4 +118,8 @@ final class PhabricatorOAuthProviderFacebook extends PhabricatorOAuthProvider {
return $this->userData['name']; return $this->userData['name'];
} }
public function shouldDiagnoseAppLogin() {
return true;
}
} }

View file

@ -118,4 +118,8 @@ final class PhabricatorOAuthProviderGitHub extends PhabricatorOAuthProvider {
return idx($this->userData, 'name'); return idx($this->userData, 'name');
} }
public function shouldDiagnoseAppLogin() {
return true;
}
} }