Files
BinarySandia04 139e7d0ef5
All checks were successful
Build and Deploy Nuxt / build (push) Successful in 35s
Widgets work
2026-04-30 19:39:53 +02:00

82 lines
1.7 KiB
JavaScript

import { ref } from 'vue';
import Server from './Server';
const UserStatus = ref(0);
function parseJwt(token) {
return JSON.parse(atob(token.split('.')[1]));
}
function SetUser(token){
localStorage.setItem('token', token);
UserStatus.value = 1;
}
async function HasAdmin(){
let response = await Server().get('/user/has-admin');
return response.data.status != "init";
}
async function SetUserSetting(key, value){
let user = GetUser();
if(!user.settings) user.settings = {};
user.settings[key] = value;
const response = await Server().post('/user/update-settings', { settings: user.settings });
return response.data.settings;
}
async function GetUserSetting(key){
const response = await Server().get('/user/get-settings');
if (response.data.settings)
return response.data.settings[key];
return undefined;
}
function GetUser(){
const token = localStorage.getItem('token');
if(token){
const data = parseJwt(token);
// Check if token is expired
const now = Date.now() / 1000;
if(now > data.exp){
LogoutUser();
return undefined;
}
return data;
}
return undefined;
}
function IsAdmin(){
const user = GetUser();
if(user){
return user.admin;
}
}
function LoadUser(){
const token = localStorage.getItem('token');
if(token) UserStatus.value = 1;
}
function LogoutUser(){
localStorage.removeItem("token");
localStorage.removeItem("selectedCampaignId");
UserStatus.value = 0;
}
export {
UserStatus,
GetUser,
SetUser,
LoadUser,
IsAdmin,
LogoutUser,
HasAdmin,
GetUserSetting,
SetUserSetting
}