All checks were successful
Build and Deploy Nuxt / build (push) Successful in 35s
82 lines
1.7 KiB
JavaScript
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
|
|
}
|