first commit

This commit is contained in:
pgmr3
2023-12-22 17:21:31 +01:00
commit dde03b1d27
57 changed files with 6287 additions and 0 deletions

194
js/myLoginScript.js Normal file
View File

@@ -0,0 +1,194 @@
// ------------------------------------------------------------------------------
//
// © Copyright (с) 2023 License: GPLv3 https://www.gnu.org/licenses/gpl-3.0.txt
// Author: https://github.com/pgmr3
// ------------------------------------------------------------------------------
//has user access with this token?
const doTestLogedin = async (whenDone, $atoken="Default", $startLogout=false ) => {
let requestData = "";
if ($atoken === "Default") {
requestData = {
startLogout: $startLogout
}
} else {
requestData = {
accesstoken: $atoken,
startLogout: $startLogout
}
}
const phpScriptUrl = '/check_backend.php';
// Create the URL with the GET parameters
const queryString = Object.keys(requestData).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(requestData[key])}`).join('&');
const fullUrl = `${phpScriptUrl}?${queryString}`;
console.log(fullUrl);
// Create a fetch request
fetch(fullUrl, {
method: 'GET',
mode: 'cors',//'no-cors',
credentials: 'include',
cache: 'no-store',
headers: {
'Content-Type': 'application/json'
//The following header enables CORS (replace "allowed-domain.com" with your allowed domain)
, 'Origin': 'SSO_HOST' //'allowed-domain.com'
}
})
.then(response => {
if (!response.ok) {
console.log("response.status =", response.status);
console.log(response);
throw new Error('response from check_backend.php was not ok');
}
return response.json();
})
.then (jsonResponse => {
// Erfolgreiche Anfrage
console.log(jsonResponse);
let logedin = false;
var message = "resonse no data";
var stringjson = "{no_data}"
//if (response && response.success && response.data) {
if (jsonResponse.success && jsonResponse.data) {
message = 'Logged in success, User name=' + jsonResponse.data.user_name + ', User ID=' + jsonResponse.data.user_id;
console.log(message);
stringjson = JSON.stringify(jsonResponse); // Converting JS object to JSON string
console.log(stringjson);
console.log("access");
//alert("access");//test
logedin = true;
}
else if (jsonResponse.successful) {
logedin = false;
console.log(jsonResponse);
console.log("no access after logout");
//alert("logged out");//test
//return jsonResponse;
//return jsonResponse.json(); // if logout
}
else {
console.log(jsonResponse);
console.log("no access");
//alert("no access");//test
logedin = false;
}
whenDone(logedin);//callback()
//Visibility(logedin, !logedin); //global
//Xlogedin = logedin; //global
return logedin;
//alert ("response in console");//Test
})
.catch(error => {
// Error in request
console.error('Error in response from check_backend.php:', error);
});
}
// access state ? echoSessionLifetime or nothing, after the session ends dom on /
function fetchAccess($echoSessionLifetime=false) {
// URL
const phpScriptUrl = '../check_lifetime.php';
// GET parameters
requestData = {
'echoSessionLifetime': $echoSessionLifetime // 'true',
//,foo: bar
}
// Create the URL with the GET parameters
const queryString = Object.keys(requestData).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(requestData[key])}`).join('&');
const fullUrl = `${phpScriptUrl}?${queryString}`;
console.log(fullUrl);
// Create a fetch request
fetch(fullUrl, {
method: 'GET',
mode: 'cors',//'no-cors',
credentials: 'include',
cache: 'no-store',
headers: {
'Content-Type': 'application/json'
//The following header enables CORS (replace "allowed-domain.com" with your allowed domain)
, 'Origin': 'SSO_HOST' //'allowed-domain.com'
}
})
.then(response => {
if (!response.ok) {
console.log("response.status =", response.status);
console.log(response);
throw new Error('response from check_lifetime.php was not ok');
}
//header abfragen
if ( response.headers.get('State') === 'noAccess'){
window.location.replace("/"); // clear history
//this.done;
throw new Error('noAccess'); //The chain is aborted, no restart
}
//SessionLifetime is text
return response.text();
})
.then((text) => {
//SessionLifetime to document
document.getElementById('session-lifetime').innerHTML = text;
return;
})
.then (() => {
// delayed repetition
let start = Date.now();
while (Date.now() - start < 1000) { // 1 second
// wating
}
timer = setTimeout(fetchAccess($echoSessionLifetime), 0);
return;
})
.catch(error => {
// Error in request
console.error('Error in response from check_lifetime.php:', error);
});
console.log("check_lifetime.php fired");
}
// This variant works, but requires too many resources
// access state ? echoSessionLifetime or nothing, after the session ends dom on /
function fetchAccess_old($echoSessionLifetime=false) {
// URL
const phpScriptUrl = '../check_lifetime.php';
// GET parameters
requestData = {
'echoSessionLifetime': $echoSessionLifetime // 'true',
//,foo: bar
}
// Create the URL with the GET parameters
const queryString = Object.keys(requestData).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(requestData[key])}`).join('&');
const fullUrl = `${phpScriptUrl}?${queryString}`;
console.log(fullUrl);
// AJAX-Anfrage
const xhr2 = new XMLHttpRequest();
xhr2.onreadystatechange = function () {
if (xhr2.readyState === xhr2.HEADERS_RECEIVED) {
const Astate = xhr2.getResponseHeader("State");
if (Astate === "noAccess") {
//window.location.href = ("/"); // clear history not
window.location.replace("/"); // clear history
xhr2.abort();
}
}
if (xhr2.readyState === XMLHttpRequest.DONE) {
if (xhr2.status === 200) {
console.log("$echoSessionLifetime: "+$echoSessionLifetime);
document.getElementById('session-lifetime').innerHTML = xhr2.responseText; //this also fire new fetchAccess()
timer = setTimeout(fetchAccess($echoSessionLifetime), 1000);
}
}
};
xhr2.open('GET', fullUrl, true);
xhr2.setRequestHeader('echoSessionLifetime', $echoSessionLifetime); // this doesn't work for php scripts
xhr2.send();
console.log("check_lifetime.php fired");
}