OpenSource Projekt-Management-Software
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

55 lines
1.6 KiB

export const user = $state({
name : null,
theme : 'default'
})
export const timetrack = $state({running:null});
export async function checkUser(){
let url = `${location.protocol}//${location.host.replace('5173','8080')}/api/user/whoami`;
let resp = await fetch(url,{credentials: 'include'});
if (resp.ok){
const json = await resp.json();
for (let key of Object.keys(json)) user[key] = json[key];
url = `${location.protocol}//${location.host.replace('5173','8080')}/api/time/started`;
resp = await fetch(url,{credentials: 'include'});
} else {
user.name = null;
}
if (resp.ok){
const track = await resp.json();
timetrack.running = track;
}
}
export async function logout(){
const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/user/logout`;
await fetch(url,{
credentials: 'include'
});
timetrack.running = null;
user.name = null;
}
export async function tryLogin(credentials){
const url = `${location.protocol}//${location.host.replace('5173','8080')}/api/user/login`;
let response = await fetch(url,{
credentials: 'include',
headers: {
'Content-Type':'application/json'
},
method: 'POST',
body: JSON.stringify(credentials)
});
if (response.ok){
const json = await response.json();
for (let key of Object.keys(json)) user[key] = json[key];
return null;
} else {
alert("Login failed!");
let json = await response.json();
return json;
}
}