]> git.wh0rd.org - tt-rss.git/blobdiff - functions.php
make SESSION_CHECK_ADDRESS work on generic sessions
[tt-rss.git] / functions.php
index acbc3d31e111fbc79d112d5d1a5c58e240be05d3..931774cfdf89b427cacc3e7788f6508b2c0edc68 100644 (file)
                        $user_theme = get_user_theme_path($link);
 
                        $_SESSION["theme"] = $user_theme;
+                       $_SESSION["ip_address"] = $_SERVER["REMOTE_ADDR"];
 
                        initialize_user_prefs($link, $_SESSION["uid"]);
 
                return $redirect_uri;
        }
 
+       function validate_session($link) {
+               if (SESSION_CHECK_ADDRESS && !DATABASE_BACKED_SESSIONS && $_SESSION["uid"]) {
+                       if ($_SESSION["ip_address"]) {
+                               if ($_SESSION["ip_address"] != $_SERVER["REMOTE_ADDR"]) {
+                                       return false;
+                               }
+                       }
+               }
+               return true;
+       }
+
        function login_sequence($link) {
                if (!SINGLE_USER_MODE) {
 
+                       if (!validate_session($link)) {
+                               logout_user();
+                               $redirect_uri = get_login_redirect();
+                               $return_to = preg_replace('/.*?\//', '', $_SERVER["REQUEST_URI"]);
+                               header("Location: $redirect_uri?rt=$return_to");
+                               exit;
+                       }
+
                        if (!USE_HTTP_AUTH) {
                                if (!$_SESSION["uid"]) {
                                        $redirect_uri = get_login_redirect();