From 5a2a5ee37480b0856b06b656b5b29d12ce132722 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Thu, 7 Nov 2013 23:50:21 +0100 Subject: Issue #235: refactorisation code Persona MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le code pour la connexion via Persona a été bougée dans le fichier main.js avec le reste du code JS Ça ne marche toujours pas sous Firefox car il essaye d'initialiser navigator.id.watch avant que le fichier login.persona.org/include.js ne soit chargé L'url est correctement écrite côté serveur pour permettre à Persona d'indiquer au site que la connexion s'est bien passée --- app/controllers/indexController.php | 2 +- app/layout/layout.phtml | 2 -- app/layout/persona.phtml | 68 ------------------------------------- app/views/javascript/main.phtml | 11 +++++- public/scripts/main.js | 58 +++++++++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 72 deletions(-) delete mode 100644 app/layout/persona.phtml diff --git a/app/controllers/indexController.php b/app/controllers/indexController.php index 15b0b1d18..76fd2cc75 100755 --- a/app/controllers/indexController.php +++ b/app/controllers/indexController.php @@ -194,7 +194,7 @@ class indexController extends ActionController { $url = 'https://verifier.login.persona.org/verify'; $assert = Request::param ('assertion'); $params = 'assertion=' . $assert . '&audience=' . - urlencode (Url::display () . ':80'); + urlencode (Url::display (null, 'php', true)); $ch = curl_init (); $options = array ( CURLOPT_URL => $url, diff --git a/app/layout/layout.phtml b/app/layout/layout.phtml index b3e6d85aa..f958acb46 100644 --- a/app/layout/layout.phtml +++ b/app/layout/layout.phtml @@ -27,8 +27,6 @@ render (); ?> -partial ('persona'); ?> - notification)) { ?>
notification['content']; ?> diff --git a/app/layout/persona.phtml b/app/layout/persona.phtml deleted file mode 100644 index f25e4c3fd..000000000 --- a/app/layout/persona.phtml +++ /dev/null @@ -1,68 +0,0 @@ -conf)) { ?> - - - - - diff --git a/app/views/javascript/main.phtml b/app/views/javascript/main.phtml index c5a14ad06..04b4a7337 100644 --- a/app/views/javascript/main.phtml +++ b/app/views/javascript/main.phtml @@ -17,4 +17,13 @@ 'go_website:"', $s['go_website'], '",', 'prev_entry:"', $s['prev_entry'], '",', 'next_entry:"', $s['next_entry'], '"', - "};\n"; + "}"; + + $mail = Session::param ('mail', 'null'); + if ($mail != 'null') { + $mail = '"' . $mail . '"'; + } + echo ',url_freshrss="', _url ('index', 'index'), '",', + 'url_login="', _url ('index', 'login'), '",', + 'url_logout="', _url ('index', 'logout'), '",', + 'current_user_mail=', $mail, ';'; diff --git a/public/scripts/main.js b/public/scripts/main.js index f4bffcca8..663f311c3 100644 --- a/public/scripts/main.js +++ b/public/scripts/main.js @@ -504,6 +504,63 @@ function init_load_more() { } // +// +function init_persona() { + $('a.signin').click(function() { + navigator.id.request(); + return false; + }); + + $('a.signout').click(function() { + navigator.id.logout(); + return false; + }); + + navigator.id.watch({ + loggedInUser: current_user_mail, + + onlogin: function(assertion) { + // A user has logged in! Here you need to: + // 1. Send the assertion to your backend for verification and to create a session. + // 2. Update your UI. + $.ajax ({ + type: 'POST', + url: url_login, + data: {assertion: assertion}, + success: function(res, status, xhr) { + var res_obj = jQuery.parseJSON(res); + + if (res_obj.status == 'failure') { + //alert (res_obj.reason); + } else if (res_obj.status == 'okay') { + location.href = url_freshrss; + } + }, + error: function(res, status, xhr) { + alert("login failure : " + res); + } + }); + }, + onlogout: function() { + // A user has logged out! Here you need to: + // Tear down the user's session by redirecting the user or making a call to your backend. + // Also, make sure loggedInUser will get set to null on the next page load. + // (That's a literal JavaScript null. Not false, 0, or undefined. null.) + $.ajax ({ + type: 'POST', + url: url_logout, + success: function(res, status, xhr) { + location.href = url_freshrss; + }, + error: function(res, status, xhr) { + //alert("logout failure" + res); + } + }); + } + }); +} +// + function init_all() { if (!(window.$ && window.shortcut && window.shortcuts && ((!full_lazyload) || $.fn.lazyload))) { if (window.console) { @@ -522,6 +579,7 @@ function init_all() { init_notifications(); init_actualize(); init_load_more(); + init_persona(); if (window.console) { console.log('Init done.'); } -- cgit v1.2.3