Files
MC_Report/public/js/auth.js

31 lines
900 B
JavaScript

const Auth = {
TK: 'mc_token',
US: 'mc_user',
token() { return localStorage.getItem(this.TK); },
user() { try { return JSON.parse(localStorage.getItem(this.US)); } catch { return null; } },
logged() { return !!this.token(); },
async login(username, password) {
const d = await API.post('/auth/login', { username, password });
localStorage.setItem(this.TK, d.token);
localStorage.setItem(this.US, JSON.stringify(d.user));
return d.user;
},
async register(data) {
return API.post('/auth/register', data);
},
logout() {
localStorage.removeItem(this.TK);
localStorage.removeItem(this.US);
location.hash = '#/login';
},
role(...r) { const u = this.user(); return u && r.includes(u.role); },
isStaff() { return this.role('owner', 'admin'); },
isAdmin() { return this.role('owner', 'admin'); },
isOwner() { return this.role('owner'); },
};