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

View File

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

View File

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

View File

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

View File

@ -5,12 +5,20 @@
// user login is required. Feel free to change the logic between
// the lines indicated below.
//
function require_login () {
if ( !$_SESSION['validated'] ) {
define("NOREDIRECT", false);
function require_login ($redirect = true) {
if ( !is_bool($redirect) ) exit();
if ( !$_SESSION['validated'] && $redirect ) {
// ******** START OF AUTH LOGIC ********
$_SESSION['appurl'] = $_SERVER['REQUEST_URI'];
header('Location: /jajauth/login.php');
exit();
// ********* 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"));
}
function redirectToLogin() {
console.log("Redirecting for login...");
window.location.replace("index.php");
}
function getContents() {
if ( searchTimeout ) clearTimeout(searchTimeout);
$.ajax({
@ -49,6 +54,7 @@ function getContents() {
data : {search: $("#search").val()},
dataType : 'json',
success : function(data, stat, jqo) {
if ( data.validated == false ) redirectToLogin();
if ( data.kindlemail != kindlemail ) {
kindlemail = data.kindlemail;
showKindleMail();
@ -96,6 +102,7 @@ function setPath(newpath) {
data: {newpath: newpath},
dataType: 'json',
success: function(data, stat, jqo) {
if ( data.validated == false ) redirectToLogin();
if ( data.changed == true ) {
$("#search").val("");
getContents();
@ -110,6 +117,7 @@ function setKindleMail(email) {
data: {kindlemail: email},
dataType: 'json',
success: function(data, stat, jqo) {
if ( data.validated == false ) redirectToLogin();
if ( data.success == false ) {
var myToast = $.toast({
text : "<h3><strong>Error: Invalid Email Address</strong></h3>",
@ -154,6 +162,7 @@ function sendToKindle(fileid, filename) {
data : {fileid: fileid},
dataType : 'json',
success : function(data, stat, jqo) {
if ( data.validated == false ) redirectToLogin();
myToast.reset();
var message = "";
message = "<h3><strong>Sent File:</strong> " + data.filename + "</h3>";