feat: MC Report System - MySQL + Express + Vanilla JS SPA
This commit is contained in:
30
public/js/auth.js
Normal file
30
public/js/auth.js
Normal file
@@ -0,0 +1,30 @@
|
||||
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'); },
|
||||
};
|
||||
Reference in New Issue
Block a user