diff --git a/ajax/getcontents.php b/ajax/getcontents.php index adece3f..8a08b00 100644 --- a/ajax/getcontents.php +++ b/ajax/getcontents.php @@ -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: diff --git a/ajax/sendtokindle.php b/ajax/sendtokindle.php index a494f6f..c04d9ea 100644 --- a/ajax/sendtokindle.php +++ b/ajax/sendtokindle.php @@ -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: diff --git a/ajax/setkindle.php b/ajax/setkindle.php index 54f4750..3f02075 100644 --- a/ajax/setkindle.php +++ b/ajax/setkindle.php @@ -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: diff --git a/ajax/setpath.php b/ajax/setpath.php index 4793ed4..17e4237 100644 --- a/ajax/setpath.php +++ b/ajax/setpath.php @@ -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: diff --git a/authfunctions.php b/authfunctions.php index 071de9b..31aac2f 100644 --- a/authfunctions.php +++ b/authfunctions.php @@ -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: diff --git a/js/books.js b/js/books.js index 4e96af4..c3327da 100644 --- a/js/books.js +++ b/js/books.js @@ -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 : "

Error: Invalid Email Address

", @@ -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 = "

Sent File: " + data.filename + "

";