mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 17:02:41 +01:00
Make old GitHub OAuth URIs work for now
Summary: Ref T1536. Like Google, GitHub is actually strict about callback URIs too. Keep them pointed at the old URIs until we can gradually migrate. Test Plan: Logged in with GitHub. Reviewers: garoevans, davidreuss, btrahan Reviewed By: garoevans CC: aran Maniphest Tasks: T1536 Differential Revision: https://secure.phabricator.com/D6265
This commit is contained in:
parent
46f0d3aa81
commit
0a044ef275
3 changed files with 27 additions and 4 deletions
|
@ -71,7 +71,8 @@ final class PhabricatorApplicationAuth extends PhabricatorApplication {
|
||||||
=> 'PhabricatorAuthConfirmLinkController',
|
=> 'PhabricatorAuthConfirmLinkController',
|
||||||
),
|
),
|
||||||
|
|
||||||
'/oauth/google/login/' => 'PhabricatorAuthOldOAuthRedirectController',
|
'/oauth/(?P<provider>\w+)/login/'
|
||||||
|
=> 'PhabricatorAuthOldOAuthRedirectController',
|
||||||
|
|
||||||
'/login/' => array(
|
'/login/' => array(
|
||||||
'' => 'PhabricatorAuthStartController',
|
'' => 'PhabricatorAuthStartController',
|
||||||
|
|
|
@ -3,18 +3,35 @@
|
||||||
final class PhabricatorAuthOldOAuthRedirectController
|
final class PhabricatorAuthOldOAuthRedirectController
|
||||||
extends PhabricatorAuthController {
|
extends PhabricatorAuthController {
|
||||||
|
|
||||||
|
private $provider;
|
||||||
|
|
||||||
public function shouldRequireLogin() {
|
public function shouldRequireLogin() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function willProcessRequest(array $data) {
|
||||||
|
$this->provider = $data['provider'];
|
||||||
|
}
|
||||||
|
|
||||||
public function processRequest() {
|
public function processRequest() {
|
||||||
// TODO: Most OAuth providers are OK with changing the redirect URI, but
|
// TODO: Most OAuth providers are OK with changing the redirect URI, but
|
||||||
// Google is strict. We need to respect the old OAuth URI until we can
|
// Google and GitHub are strict. We need to respect the old OAuth URI until
|
||||||
// get installs to migrate. This just keeps the old OAuth URI working
|
// we can get installs to migrate. This just keeps the old OAuth URI working
|
||||||
// by redirecting to the new one.
|
// by redirecting to the new one.
|
||||||
|
|
||||||
|
$provider_map = array(
|
||||||
|
'google' => 'google:google.com',
|
||||||
|
'github' => 'github:github.com',
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!isset($provider_map[$this->provider])) {
|
||||||
|
return new Aphront404Response();
|
||||||
|
}
|
||||||
|
|
||||||
|
$provider_key = $provider_map[$this->provider];
|
||||||
|
|
||||||
$uri = $this->getRequest()->getRequestURI();
|
$uri = $this->getRequest()->getRequestURI();
|
||||||
$uri->setPath($this->getApplicationURI('login/google:google.com/'));
|
$uri->setPath($this->getApplicationURI('login/'.$provider_key.'/'));
|
||||||
return id(new AphrontRedirectResponse())->setURI($uri);
|
return id(new AphrontRedirectResponse())->setURI($uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,4 +36,9 @@ final class PhabricatorAuthProviderOAuthGitHub
|
||||||
return 'Github';
|
return 'Github';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getLoginURI() {
|
||||||
|
// TODO: Clean this up. See PhabricatorAuthOldOAuthRedirectController.
|
||||||
|
return PhabricatorEnv::getURI('/oauth/github/login/');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue