]> git.wh0rd.org - tt-rss.git/commitdiff
improve session expiry handling (redirect back to login form on rpc error code 6)
authorAndrew Dolgov <fox@madoka.spb.ru>
Thu, 9 Nov 2006 10:00:24 +0000 (11:00 +0100)
committerAndrew Dolgov <fox@madoka.spb.ru>
Thu, 9 Nov 2006 10:00:24 +0000 (11:00 +0100)
functions.js
login.php
tt-rss.js

index db1351510ac7417b5132a9f9b7a69290674bb4d5..d701710ceb8bd1ee14997da71587fc3f635cb1d5 100644 (file)
@@ -779,6 +779,11 @@ function hideOrShowFeedsCategory(doc, node, hide, cat_node) {
 
        var cat_unread = 0;
 
+       if (!node) {
+               debug("hideOrShowFeeds: passed node is null, aborting");
+               return;
+       }
+
        if (node.hasChildNodes() && node.firstChild.nextSibling != false) {  
                for (i = 0; i < node.childNodes.length; i++) {
                        if (node.childNodes[i].nodeName != "LI") { continue; }
@@ -1394,12 +1399,18 @@ function storeInitParams(params, is_client) {
 
 function fatalError(code, message) {
        try {   
-               var fe = document.getElementById("fatal_error");
-               var fc = document.getElementById("fatal_error_msg");
 
-               fc.innerHTML = "Code " + code + ": " + message;
+               if (code != 6) {
 
-               fe.style.display = "block";
+                       var fe = document.getElementById("fatal_error");
+                       var fc = document.getElementById("fatal_error_msg");
+       
+                       fc.innerHTML = "Code " + code + ": " + message;
+       
+                       fe.style.display = "block";
+               } else {
+                       window.location.href = "login.php?rt=none";                     
+               }
 
        } catch (e) {
                exception_error("fatalError", e);
index 8cd2a5c5d515574385e691746ab885fc45b2163d..27170c96ba9fdced16431007bbaedb2db53dd2df 100644 (file)
--- a/login.php
+++ b/login.php
@@ -9,6 +9,7 @@
        $error_msg = "";
 
        $url_path = get_script_urlpath();
+       $return_to = $_REQUEST["rt"];
 
        if (ENABLE_LOGIN_SSL) {         
                $redirect_base = "https://" . $_SERVER["SERVER_NAME"] . $url_path;
@@ -16,7 +17,7 @@
                $redirect_base = "http://" . $_SERVER["SERVER_NAME"] . $url_path;
        }
 
-       if (SINGLE_USER_MODE) {
+       if (SINGLE_USER_MODE && $return_to != "none") {
                header("Location: $redirect_base/tt-rss.php");
                exit;
        }
 
        $login = $_POST["login"];
        $password = $_POST["password"];
-       $return_to = $_POST["rt"];
        $action = $_POST["action"];
 
-       if ($_COOKIE[get_session_cookie_name()]) {
+       if ($_COOKIE[get_session_cookie_name()] && $return_to != "none") {
                require_once "sessions.php";
                if ($_SESSION["uid"]) {
                        initialize_user_prefs($link, $_SESSION["uid"]); 
@@ -129,7 +129,8 @@ window.onload = init;
                        <tr><td colspan="2" align="right" class="innerLoginCell">
                                <input type="submit" class="button" value="Login">
                                <input type="hidden" name="action" value="login">
-                               <input type="hidden" name="rt" value="<?php echo $_GET['rt'] ?>">
+                               <input type="hidden" name="rt" 
+                                       value="<?php if ($return_to != 'none') { echo $return_to; } ?>">
                        </td></tr>
                </table>
        </td>
index 0884ce8ae96b8b91f3a0ca4319816f8ef1a54a1f..bf673174fc9d6529b9e798b8196bcbdecc204dd0 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -73,10 +73,22 @@ function refetch_callback() {
                                return;
                        } 
        
-                       var error_code = reply.getAttribute("error-code");
-               
+                       var error_code = false;
+                       var error_msg = false;
+
+                       if (reply.firstChild) {
+                               error_code = reply.firstChild.getAttribute("error-code");
+                               error_msg = reply.firstChild.getAttribute("error-msg");
+                       }
+
+                       if (!error_code) {      
+                               error_code = reply.getAttribute("error-code");
+                               error_msg = reply.getAttribute("error-msg");
+                       }
+       
                        if (error_code && error_code != 0) {
-                               return fatalError(error_code, reply.getAttribute("error-msg"));
+                               debug("refetch_callback: got error code " + error_code);
+                               return fatalError(error_code, error_msg);
                        }
 
                        var counters = reply.firstChild;
@@ -535,6 +547,11 @@ function toggleDispRead() {
 }
 
 function parse_runtime_info(elem) {
+       if (!elem) {
+               debug("parse_runtime_info: elem is null, aborting");
+               return;
+       }
+
        var param = elem.firstChild;
 
        debug("parse_runtime_info: " + param);