const ajaxFetchHeaders = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json' }; //Check for jQuery if (!window.jQuery) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js'; head.appendChild(script); } //Start init function if jquery was loaded successfully waitForjQuery(); function waitForjQuery(method) { if (window.jQuery) { getMenu(); } else { setTimeout(function () { waitForjQuery(method) }, 50); } } async function getMenu() { let resp = await fetch(`https://superjojo.de/superjojode/menu`, { headers: ajaxFetchHeaders }); if (!resp.ok) { throw new Error("Menu data could not be fetched.") } let data = await resp.text(); $("body").prepend(data); checkForLogin(); } function toggleMenu() { if ($("#headerMenu").hasClass("is-active") === true) { $("#headerMenu").removeClass("is-active"); $("menuBar").slideUp(); } else { $("#headerMenu").addClass("is-active"); $("menuBar").slideDown(); } } function toggleSideLogin() { if ($("#sideLoginForm").is(":visible")) { $("#loginLabel").html('person Login'); } else { $("#loginLabel").html('clear Abbrechen'); } $("#sideLoginForm").slideToggle(); } async function sideLogin() { let userInput = {}; userInput.username = $("#sideLoginUsername").val(); userInput.password = $("#sideLoginPassword").val(); try { let resp = await fetch(`https://superjojo.de/superjojode/login`, { headers: ajaxFetchHeaders, method: "POST", body: JSON.stringify(userInput) }); resp = await resp.json(); const jwt = resp.jwt; localStorage.setItem("sj_jwt", jwt); toggleSideLogin(); checkForLogin(); } catch (error) { $("#sideUserMessage").html("Das wahr wohl nichts! :-("); console.warn(error); } } async function checkForLogin() { try { const jwt = localStorage.getItem("sj_jwt"); let resp = await fetch(`https://superjojo.de/superjojode/user`, { headers: { 'X-Requested-With': 'XMLHttpRequest', 'Authorization': `Bearer ${jwt}` } } ); if (!resp.ok) { throw new Error("User data could not be fetched.") } let user = await resp.json(); $("#loginButton").html("power Logout
" + user.name + "
"); $("#loginButton").click(logOut); } catch (error) { console.warn(error); } } async function logOut() { //delete JWT const result = await fetch(`https://superjojo.de/superjojode/logout`); if (result.status == 200) { localStorage.setItem("sj_jwt", "invalid"); window.location = 'https://superjojo.de/'; } else { alert("logout failed") } }