import {getData, sendData} from "/js/libraries/serverTools.js" export function getUser(user,loaded,callbackOuter) { let callback = function(response) { Object.assign(user,JSON.parse(response)) if(callbackOuter!=undefined) { callbackOuter() } loaded.update((val) => { return val + 1 }) } getData("/xx/get-user",callback) } export function changeUser(name,value,user) { if (user[name]!=value && user[name]!=undefined) { user[name] = value let data = new Object(); data[name] = value sendData("/xx/change-user",data) } } export function changePasswordVisibility(button) { let input = button.previousElementSibling let type = input.type if (type=="text") { input.type = "password"; button.style.opacity = 0.25 } else { input.type = "text"; button.style.opacity = 1 } } export function checkEmail(email,msg) { if (email.includes("@")) { return true } else { msg.innerHTML = "must contain '@'" return false } } export function checkPassword(password,msg) { let passwordLength = password.length if (passwordLength<8) { msg.innerHTML = "must be 8 characters" return false } let numNumbers = password.match(/\d/g)?.length || 0; if (numNumbers<1) { msg.innerHTML = "mush have digits" return false } let numLetters = password.match(/\D/g)?.length || 0; if (numLetters<2) { msg.innerHTML = "must have letters" return false } return true } export function redirectLogged() { let callback = function(responseText) { let response = JSON.parse(responseText) if (response) { window.location.href = "/"; } } getData("/xx/check-login",callback) } export function redirectNotLogged() { let callback = function(responseText) { let response = JSON.parse(responseText) if (!response) { window.location.href = "/"; } } getData("/xx/check-login",callback) } // Redirect to the landing page export function toLandingPage(response) { if (response!=0) { window.location.href = "/"; } } // Redirect to the dashboard page export function toDashboard() { window.location.href = "/"; } // Process log in export function processLoginResponse(response,msgs,remember) { if (response==0) { msgs.email.innerHTML = "not found" } else if (response==1) { msgs.password.innerHTML = "is wrong" } else { if (remember) { let date = new Date() date.setMonth(date.getMonth()+1) date = date.toUTCString() document.cookie = "__genierememberme=; expires=" + date + "; path=/;SameSite=Lax"; } toDashboard() } } // Log in export function login(msgs,inputs) { msgs.email.innerHTML = "" msgs.password.innerHTML = "" let data = {email: inputs.email.value, password: inputs.password.value, remember: inputs.remember.checked} sendData('/xx/login-post', data, (response) => processLoginResponse(response,msgs,inputs.remember.checked)) } // Process sign in function processSignupResponse(response,msgs) { if (response) { toDashboard() } else { msgs.email.innerHTML = "already exists" } } // Sign up export function signup(msgs,inputs) { msgs.email.innerHTML = "" let email = inputs.email.value let password = inputs.password.value if (checkEmail(email,msgs.email)==false) { return } if (checkPassword(password,msgs.password)==false) { return } let data = {email: email, password: password} sendData('/xx/signup-post', data, (response) => processSignupResponse(response,msgs)) } export function confirmEmail(msg,code,callback) { msg.innerHTML = "" sendData('xx/confirm-email',code,callback) } // Log out export function logout() { var xmlHttp = new XMLHttpRequest(); xmlHttp.open( "GET", "/logout", false ); // false for synchronous request xmlHttp.send( null ); window.location.href = "/"; }