31 lines
917 B
JavaScript
31 lines
917 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() && this.user()); },
|
|
|
|
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'); },
|
|
};
|