2023-07-30 17:04:15 +07:00
|
|
|
|
|
|
|
import {getData, sendData} from "/js/libraries/serverTools.js"
|
|
|
|
|
2023-08-01 19:56:41 +07:00
|
|
|
export function getUser(user,loaded,callbackOuter) {
|
2023-07-30 17:04:15 +07:00
|
|
|
let callback = function(response) {
|
|
|
|
Object.assign(user,JSON.parse(response))
|
|
|
|
if(callbackOuter!=undefined) {
|
|
|
|
callbackOuter()
|
|
|
|
}
|
2023-08-01 19:56:41 +07:00
|
|
|
loaded.update((val) => {
|
|
|
|
return val + 1
|
|
|
|
})
|
2023-07-30 17:04:15 +07:00
|
|
|
}
|
|
|
|
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 = "/";
|
|
|
|
}
|