summaryrefslogtreecommitdiff
path: root/controllers/auth.php
diff options
context:
space:
mode:
Diffstat (limited to 'controllers/auth.php')
-rw-r--r--controllers/auth.php17
1 files changed, 14 insertions, 3 deletions
diff --git a/controllers/auth.php b/controllers/auth.php
index a2fa08f..26aa933 100644
--- a/controllers/auth.php
+++ b/controllers/auth.php
@@ -74,7 +74,7 @@ $app->get('/auth/start', function() use($app) {
$req = $app->request();
$params = $req->params();
-
+
// the "me" parameter is user input, and may be in a couple of different forms:
// aaronparecki.com http://aaronparecki.com http://aaronparecki.com/
// Normlize the value now (move this into a function in IndieAuth\Client later)
@@ -88,6 +88,10 @@ $app->get('/auth/start', function() use($app) {
return;
}
+ if(k($params, 'redirect')) {
+ $_SESSION['redirect_after_login'] = $params['redirect'];
+ }
+
$authorizationEndpoint = IndieAuth\Client::discoverAuthorizationEndpoint($me);
$tokenEndpoint = IndieAuth\Client::discoverTokenEndpoint($me);
$micropubEndpoint = IndieAuth\Client::discoverMicropubEndpoint($me);
@@ -244,7 +248,13 @@ $app->get('/auth/callback', function() use($app) {
unset($_SESSION['auth_state']);
if($redirectToDashboardImmediately) {
- $app->redirect('/new', 301);
+ if(k($_SESSION, 'redirect_after_login')) {
+ $dest = $_SESSION['redirect_after_login'];
+ unset($_SESSION['redirect_after_login']);
+ $app->redirect($dest, 301);
+ } else {
+ $app->redirect('/new', 301);
+ }
} else {
$html = render('auth_callback', array(
'title' => 'Sign In',
@@ -254,7 +264,8 @@ $app->get('/auth/callback', function() use($app) {
'tokenEndpoint' => $tokenEndpoint,
'auth' => $token['auth'],
'response' => $token['response'],
- 'curl_error' => (array_key_exists('error', $token) ? $token['error'] : false)
+ 'curl_error' => (array_key_exists('error', $token) ? $token['error'] : false),
+ 'destination' => (k($_SESSION, 'redirect_after_login') ?: '/new')
));
$app->response()->body($html);
}