From 3b7d766c31314a3d42d651b8c8f643ff8d6e15bd Mon Sep 17 00:00:00 2001 From: Aaron Parecki Date: Sun, 10 May 2015 16:49:22 +0200 Subject: do the micropub post and redirect after it's created! --- controllers/auth.php | 17 ++++++++++++++--- controllers/editor.php | 27 +++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) (limited to 'controllers') 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); } diff --git a/controllers/editor.php b/controllers/editor.php index a66c188..caac4a3 100644 --- a/controllers/editor.php +++ b/controllers/editor.php @@ -6,6 +6,26 @@ $app->get('/editor', function() use($app) { $app->response()->body($html); }); +$app->post('/editor/publish', function() use($app) { + + if($user=require_login($app)) { + $params = $app->request()->params(); + + $micropub_request = array( + 'h' => 'entry', + 'name' => $params['name'], + 'content' => $params['body'] + ); + + $r = micropub_post_for_user($user, $micropub_request); + + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode([ + 'location' => $r['location'] + ])); + } +}); + $app->post('/editor/upload', function() use($app) { // Fake a file uploader by echo'ing back the data URI $fn = $_FILES['files']['tmp_name'][0]; @@ -21,6 +41,7 @@ $app->post('/editor/upload', function() use($app) { ] ])); }); + $app->post('/editor/delete-file', function() use($app) { $app->response()['Content-type'] = 'application/json'; $app->response()->body(json_encode(['result'=>'deleted'])); @@ -33,6 +54,12 @@ $app->get('/editor/oembed', function() use($app) { $app->response()->body($json); }); +$app->post('/editor/test-login', function() use($app) { + $logged_in = array_key_exists('user_id', $_SESSION); + $app->response()['Content-type'] = 'application/json'; + $app->response()->body(json_encode(['logged_in'=>$logged_in])); +}); + // $app->get('/appcache.manifest', function() use($app) { // $content = partial('partials/appcache'); -- cgit v1.2.3