Catch ajax calls when session has expired and redirect to login

This commit is contained in:
Junior 2024-12-02 07:21:32 -05:00
parent 44420c8ad7
commit 516bc6bfa9
6 changed files with 65 additions and 28 deletions

View File

@ -4,14 +4,23 @@ require '../header.php';
require '../variables.php'; require '../variables.php';
require '../functions.php'; require '../functions.php';
require_login(); $validated = require_login(NOREDIRECT);
function sendResponse($data) {
header('Content-Type: application/json');
echo json_encode($data);
exit();
}
$data = array(); $data = array();
$data['validated'] = $validated;
$data['bookdir'] = $_SESSION['bookdir']; $data['bookdir'] = $_SESSION['bookdir'];
$data['bookdirname'] = basename($_SESSION['bookdir']); $data['bookdirname'] = basename($_SESSION['bookdir']);
$data['kindlemail'] = ""; $data['kindlemail'] = "";
$cankindle = false; $cankindle = false;
if ( !$validated ) sendResponse($data);
$searching = false; $searching = false;
$searchfor = ""; $searchfor = "";
if ( isset($_REQUEST['search']) && ($_REQUEST['search'] != "") ) { if ( isset($_REQUEST['search']) && ($_REQUEST['search'] != "") ) {
@ -99,8 +108,6 @@ if ( !$searching ) {
} }
} }
header('Content-Type: application/json'); sendResponse($data);
echo json_encode($data);
exit();
// vim: ts=3 sw=3 et: // vim: ts=3 sw=3 et:

View File

@ -11,11 +11,20 @@ use PHPMailer\PHPMailer\Exception;
require "../vendor/autoload.php"; require "../vendor/autoload.php";
require_login(); $validated = require_login(NOREDIRECT);
function sendResponse($data) {
header('Content-Type: application/json');
echo json_encode($data);
exit();
}
$data = array(); $data = array();
$data['validated'] = $validated;
$data["message"] = ""; $data["message"] = "";
if ( !$validated ) sendResponse($data);
$query = "SELECT email FROM amazon WHERE username=:username"; $query = "SELECT email FROM amazon WHERE username=:username";
$fields = array(); $fields = array();
$fields[':username'] = $_SESSION['username']; $fields[':username'] = $_SESSION['username'];
@ -26,9 +35,7 @@ if ( $row = $sth->fetch() ) {
} else { } else {
$data["success"] = false; $data["success"] = false;
$data["message"] = "No kindle address set"; $data["message"] = "No kindle address set";
header('Content-Type: application/json'); sendResponse($data);
echo json_encode($data);
exit();
} }
$data["tomail"] = $kindlemail; $data["tomail"] = $kindlemail;
@ -52,9 +59,7 @@ if ( isset($_REQUEST['fileid']) ) {
if ( !$goodtodown ) { if ( !$goodtodown ) {
$data["success"] = false; $data["success"] = false;
$data["message"] = "Book not found on disk"; $data["message"] = "Book not found on disk";
header('Content-Type: application/json'); sendResponse($data);
echo json_encode($data);
exit();
} }
$mail = new PHPMailer(); $mail = new PHPMailer();
@ -89,8 +94,6 @@ $data['filename'] = $filename;
$data['tomail'] = $kindlemail; $data['tomail'] = $kindlemail;
$data['success'] = $sent; $data['success'] = $sent;
header('Content-Type: application/json'); sendResponse($data);
echo json_encode($data);
exit();
// vim: ts=3 sw=3 et: // vim: ts=3 sw=3 et:

View File

@ -4,23 +4,28 @@ require '../header.php';
require '../variables.php'; require '../variables.php';
require '../functions.php'; require '../functions.php';
require_login(); $validated = require_login(NOREDIRECT);
if ( !isset($_REQUEST['kindlemail']) ) { function sendResponse($data) {
header('Content-Type: application/json');
echo json_encode($data);
exit(); exit();
} }
$data = array(); $data = array();
$data['validated'] = $validated;
$data['success'] = true; $data['success'] = true;
$data['message'] = ""; $data['message'] = "";
$data['kindlemail'] = ""; $data['kindlemail'] = "";
if ( !$validated ) sendResponse($data);
if ( !isset($_REQUEST['kindlemail']) ) sendResponse($data);
if ( !filter_var($_REQUEST['kindlemail'], FILTER_VALIDATE_EMAIL) ) { if ( !filter_var($_REQUEST['kindlemail'], FILTER_VALIDATE_EMAIL) ) {
$data['success'] = false; $data['success'] = false;
$data['message'] = "Email address is not properly formatted!"; $data['message'] = "Email address is not properly formatted!";
header('Content-Type: application/json'); sendResponse($data);
echo json_encode($data);
exit();
} }
$kindlemail = $_REQUEST['kindlemail']; $kindlemail = $_REQUEST['kindlemail'];
@ -30,10 +35,8 @@ $sth->bindValue(":username", $_SESSION['username'], PDO::PARAM_STR);
$sth->bindValue(":email", $_REQUEST['kindlemail'], PDO::PARAM_STR); $sth->bindValue(":email", $_REQUEST['kindlemail'], PDO::PARAM_STR);
$sth->execute(); $sth->execute();
header('Content-Type: application/json');
$data['message'] = "Email set successfully"; $data['message'] = "Email set successfully";
$data['kindlemail'] = $_REQUEST['kindlemail']; $data['kindlemail'] = $_REQUEST['kindlemail'];
echo json_encode($data); sendResponse($data);
exit();
// vim: ts=3 sw=3 et: // vim: ts=3 sw=3 et:

View File

@ -4,10 +4,19 @@ require '../header.php';
require '../variables.php'; require '../variables.php';
require '../functions.php'; require '../functions.php';
require_login(); $validated = require_login(NOREDIRECT);
$data = array(); $data = array();
$data['changed'] = false; $data['changed'] = false;
$data['validated'] = $validated;
function sendResponse($data) {
header('Content-Type: application/json');
echo json_encode($data);
exit();
}
if ( !$validated ) sendResponse($data);
if ( isset($_REQUEST['newpath']) ) { if ( isset($_REQUEST['newpath']) ) {
$newpath = makePathSafe($_REQUEST['newpath']); $newpath = makePathSafe($_REQUEST['newpath']);
@ -20,8 +29,6 @@ if ( isset($_REQUEST['newpath']) ) {
$data['bookdir'] = $_SESSION['bookdir']; $data['bookdir'] = $_SESSION['bookdir'];
$data['bookdirname'] = basename($_SESSION['bookdir']); $data['bookdirname'] = basename($_SESSION['bookdir']);
header('Content-Type: application/json'); sendResponse($data);
echo json_encode($data);
exit();
// vim: ts=3 sw=3 et: // vim: ts=3 sw=3 et:

View File

@ -5,12 +5,20 @@
// user login is required. Feel free to change the logic between // user login is required. Feel free to change the logic between
// the lines indicated below. // the lines indicated below.
// //
function require_login () { define("NOREDIRECT", false);
if ( !$_SESSION['validated'] ) { function require_login ($redirect = true) {
if ( !is_bool($redirect) ) exit();
if ( !$_SESSION['validated'] && $redirect ) {
// ******** START OF AUTH LOGIC ******** // ******** START OF AUTH LOGIC ********
$_SESSION['appurl'] = $_SERVER['REQUEST_URI']; $_SESSION['appurl'] = $_SERVER['REQUEST_URI'];
header('Location: /jajauth/login.php'); header('Location: /jajauth/login.php');
exit(); exit();
// ********* END OF AUTH LOGIC ********* // ********* END OF AUTH LOGIC *********
} elseif ( !$_SESSION['validated'] && !$redirect ) {
return false;
} elseif ( $_SESSION['validated'] ) {
return true;
} }
} }
// vim: set ts=3 sw=3:

View File

@ -42,6 +42,11 @@ function showKindleMail() {
$("#amazonlink").html("KindleMail: " + ((kindlemail != "") ? kindlemail : "Click to Set")); $("#amazonlink").html("KindleMail: " + ((kindlemail != "") ? kindlemail : "Click to Set"));
} }
function redirectToLogin() {
console.log("Redirecting for login...");
window.location.replace("index.php");
}
function getContents() { function getContents() {
if ( searchTimeout ) clearTimeout(searchTimeout); if ( searchTimeout ) clearTimeout(searchTimeout);
$.ajax({ $.ajax({
@ -49,6 +54,7 @@ function getContents() {
data : {search: $("#search").val()}, data : {search: $("#search").val()},
dataType : 'json', dataType : 'json',
success : function(data, stat, jqo) { success : function(data, stat, jqo) {
if ( data.validated == false ) redirectToLogin();
if ( data.kindlemail != kindlemail ) { if ( data.kindlemail != kindlemail ) {
kindlemail = data.kindlemail; kindlemail = data.kindlemail;
showKindleMail(); showKindleMail();
@ -96,6 +102,7 @@ function setPath(newpath) {
data: {newpath: newpath}, data: {newpath: newpath},
dataType: 'json', dataType: 'json',
success: function(data, stat, jqo) { success: function(data, stat, jqo) {
if ( data.validated == false ) redirectToLogin();
if ( data.changed == true ) { if ( data.changed == true ) {
$("#search").val(""); $("#search").val("");
getContents(); getContents();
@ -110,6 +117,7 @@ function setKindleMail(email) {
data: {kindlemail: email}, data: {kindlemail: email},
dataType: 'json', dataType: 'json',
success: function(data, stat, jqo) { success: function(data, stat, jqo) {
if ( data.validated == false ) redirectToLogin();
if ( data.success == false ) { if ( data.success == false ) {
var myToast = $.toast({ var myToast = $.toast({
text : "<h3><strong>Error: Invalid Email Address</strong></h3>", text : "<h3><strong>Error: Invalid Email Address</strong></h3>",
@ -154,6 +162,7 @@ function sendToKindle(fileid, filename) {
data : {fileid: fileid}, data : {fileid: fileid},
dataType : 'json', dataType : 'json',
success : function(data, stat, jqo) { success : function(data, stat, jqo) {
if ( data.validated == false ) redirectToLogin();
myToast.reset(); myToast.reset();
var message = ""; var message = "";
message = "<h3><strong>Sent File:</strong> " + data.filename + "</h3>"; message = "<h3><strong>Sent File:</strong> " + data.filename + "</h3>";