초기 커밋 - EV AS 관리 시스템
This commit is contained in:
63
frontend/static/js/auth.js
Normal file
63
frontend/static/js/auth.js
Normal file
@@ -0,0 +1,63 @@
|
||||
const Auth = (() => {
|
||||
const KEY_TOKEN = 'ev_token';
|
||||
const KEY_ROLE = 'ev_role';
|
||||
const KEY_NAME = 'ev_name';
|
||||
const KEY_ID = 'ev_uid';
|
||||
|
||||
function save(token, role, name, id) {
|
||||
localStorage.setItem(KEY_TOKEN, token);
|
||||
localStorage.setItem(KEY_ROLE, role);
|
||||
localStorage.setItem(KEY_NAME, name);
|
||||
localStorage.setItem(KEY_ID, id);
|
||||
}
|
||||
function token() { return localStorage.getItem(KEY_TOKEN); }
|
||||
function role() { return localStorage.getItem(KEY_ROLE); }
|
||||
function name() { return localStorage.getItem(KEY_NAME); }
|
||||
function uid() { return localStorage.getItem(KEY_ID); }
|
||||
|
||||
function logout() {
|
||||
[KEY_TOKEN, KEY_ROLE, KEY_NAME, KEY_ID].forEach(k => localStorage.removeItem(k));
|
||||
location.href = '/pages/login.html';
|
||||
}
|
||||
|
||||
function require(allowedRoles) {
|
||||
if (!token()) { logout(); return false; }
|
||||
if (allowedRoles && !allowedRoles.includes(role())) {
|
||||
alert('접근 권한이 없습니다.');
|
||||
history.back();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function renderNav(el) {
|
||||
if (!el) return;
|
||||
el.innerHTML = `
|
||||
<span class="nav-user">
|
||||
<span>${name()} <small style="color:var(--accent)">[${role()}]</small></span>
|
||||
<a onclick="Auth.logout()">로그아웃</a>
|
||||
</span>`;
|
||||
}
|
||||
|
||||
function statusBadge(status) {
|
||||
const map = {
|
||||
pending_approval: '승인대기', pending: '접수', in_progress: '처리중',
|
||||
done: '완료', waiting: '부품대기', revisit: '재방문',
|
||||
registered: '등록', reviewing: '검토중', developing: '개발중',
|
||||
deployed: '배포완료',
|
||||
};
|
||||
return `<span class="badge s-${status}">${map[status] || status}</span>`;
|
||||
}
|
||||
|
||||
function costStatusBadge(s) {
|
||||
const map = { pending:'미처리', billed:'청구완료', waived:'면제', settled:'정산완료' };
|
||||
return `<span class="badge s-cost-${s}">${map[s] || s}</span>`;
|
||||
}
|
||||
|
||||
function fmtDt(dt) {
|
||||
if (!dt) return '-';
|
||||
return new Date(dt).toLocaleString('ko-KR', {year:'numeric',month:'2-digit',day:'2-digit',hour:'2-digit',minute:'2-digit'});
|
||||
}
|
||||
|
||||
return { save, token, role, name, uid, logout, require, renderNav, statusBadge, costStatusBadge, fmtDt };
|
||||
})();
|
||||
Reference in New Issue
Block a user