From d18b4aacec90bd4952a1010511da9f0cfa73c125 Mon Sep 17 00:00:00 2001 From: Nate Jones Date: Sat, 4 Apr 2015 18:46:44 +0000 Subject: [PATCH] Added ability to return (on login) to last visited page on logout. --- logout.php | 78 +++++++++++++++++++++++++++++++++++++++- resources/check_auth.php | 8 +++-- 2 files changed, 83 insertions(+), 3 deletions(-) diff --git a/logout.php b/logout.php index fe44e1180d..c90579e389 100644 --- a/logout.php +++ b/logout.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2012 + Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): @@ -25,6 +25,82 @@ */ include "root.php"; +require_once "resources/require.php"; + +//check for login return preference + if ($_SESSION['login']['destination_last']['boolean'] == 'true') { + if ($_SERVER['HTTP_REFERER'] != '') { + //convert to relative path + $referrer = substr($_SERVER['HTTP_REFERER'], strpos($_SERVER['HTTP_REFERER'], $_SERVER["HTTP_HOST"]) + strlen($_SERVER["HTTP_HOST"])); + //check if destination url already exists + $sql = "select count(*) as num_rows from v_user_settings "; + $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and user_uuid = '".$_SESSION["user_uuid"]."' "; + $sql .= "and user_setting_category = 'login' "; + $sql .= "and user_setting_subcategory = 'destination' "; + $sql .= "and user_setting_name = 'url' "; + $prep_statement = $db->prepare($sql); + if ($prep_statement) { + $prep_statement->execute(); + $row = $prep_statement->fetch(PDO::FETCH_ASSOC); + $exists = ($row['num_rows'] > 0) ? true : false; + } + unset($sql, $prep_statement, $row); + + //if exists, update + if ($exists) { + $sql = "update v_user_settings set "; + $sql .= "user_setting_value = '".$referrer."', "; + $sql .= "user_setting_enabled = 'true' "; + $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and user_uuid = '".$_SESSION["user_uuid"]."' "; + $sql .= "and user_setting_category = 'login' "; + $sql .= "and user_setting_subcategory = 'destination' "; + $sql .= "and user_setting_name = 'url' "; + $db->exec(check_sql($sql)); + unset($sql); + } + //otherwise, insert + else { + $sql = "insert into v_user_settings "; + $sql .= "( "; + $sql .= "user_setting_uuid, "; + $sql .= "domain_uuid, "; + $sql .= "user_uuid, "; + $sql .= "user_setting_category, "; + $sql .= "user_setting_subcategory, "; + $sql .= "user_setting_name, "; + $sql .= "user_setting_value, "; + $sql .= "user_setting_enabled "; + $sql .= ") "; + $sql .= "values "; + $sql .= "( "; + $sql .= "'".uuid()."', "; + $sql .= "'".$_SESSION['domain_uuid']."', "; + $sql .= "'".$_SESSION["user_uuid"]."', "; + $sql .= "'login', "; + $sql .= "'destination', "; + $sql .= "'url', "; + $sql .= "'".$referrer."', "; + $sql .= "'true' "; + $sql .= ") "; + $db->exec(check_sql($sql)); + unset($sql); + } + } + } + else { + //disable if not to remember last + $sql = "update v_user_settings set "; + $sql .= "user_setting_enabled = 'false' "; + $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and user_uuid = '".$_SESSION["user_uuid"]."' "; + $sql .= "and user_setting_category = 'login' "; + $sql .= "and user_setting_subcategory = 'destination' "; + $sql .= "and user_setting_name = 'url' "; + $db->exec(check_sql($sql)); + unset($sql); + } //redirect the user to the index page header("Location: ".PROJECT_PATH."/login.php"); diff --git a/resources/check_auth.php b/resources/check_auth.php index f899ebe432..af23992db0 100644 --- a/resources/check_auth.php +++ b/resources/check_auth.php @@ -155,7 +155,7 @@ require_once "resources/require.php"; //prepare the uuids $user_uuid = uuid(); $contact_uuid = uuid(); - + //set the user_id $_SESSION["user_uuid"] = $user_uuid; @@ -379,10 +379,14 @@ require_once "resources/require.php"; //redirect the user if (check_str($_REQUEST["rdr"]) !== 'n'){ $path = check_str($_POST["path"]); - if(isset($path) && !empty($path) && $path!="index2.php" && $path!="/install.php") { + if (isset($path) && !empty($path) && $path!="index2.php" && $path!="/install.php") { header("Location: ".$path); exit(); } + else if ($_SESSION['login']['destination']['url'] != '') { + header("Location: ".$_SESSION['login']['destination']['url']); + exit(); + } } }