| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- const Auth = (() => {
- let currentUser = null;
- function getToken() { return localStorage.getItem('token'); }
- function setToken(token) { localStorage.setItem('token', token); }
- function clearToken() { localStorage.removeItem('token'); }
- function getCurrentUser() { return currentUser; }
- function isLoggedIn() { return !!getToken(); }
- function isAdmin() { return currentUser?.isAdmin || false; }
- async function init() {
- if (!getToken()) return false;
- try {
- currentUser = await API.me();
- return true;
- } catch (e) {
- clearToken();
- return false;
- }
- }
- function logout() {
- clearToken();
- currentUser = null;
- window.location.reload();
- }
- function setupForms() {
- // Tab switching
- document.querySelectorAll('.auth-tab').forEach(btn => {
- btn.addEventListener('click', () => {
- document.querySelectorAll('.auth-tab').forEach(b => b.classList.remove('active'));
- btn.classList.add('active');
- const tab = btn.dataset.tab;
- document.getElementById('login-form').style.display = tab === 'login' ? 'flex' : 'none';
- document.getElementById('register-form').style.display = tab === 'register' ? 'flex' : 'none';
- document.getElementById('auth-error').style.display = 'none';
- });
- });
- document.getElementById('login-form').addEventListener('submit', async (e) => {
- e.preventDefault();
- const login = document.getElementById('login-username').value.trim();
- const password = document.getElementById('login-password').value;
- try {
- const res = await API.login(login, password);
- setToken(res.token);
- currentUser = res.user;
- window.location.reload();
- } catch (err) {
- showAuthError(err.message);
- }
- });
- document.getElementById('register-form').addEventListener('submit', async (e) => {
- e.preventDefault();
- const login = document.getElementById('reg-username').value.trim();
- const email = document.getElementById('reg-email').value.trim();
- const password = document.getElementById('reg-password').value;
- try {
- await API.register(login, email, password);
- showAuthError('Registration successful! You can now login (or wait for admin activation).', 'success');
- } catch (err) {
- showAuthError(err.message);
- }
- });
- }
- function showAuthError(msg, type = 'error') {
- const el = document.getElementById('auth-error');
- el.textContent = msg;
- el.className = type === 'success' ? 'success-msg' : 'error-msg';
- el.style.display = 'block';
- }
- return { init, logout, getCurrentUser, isLoggedIn, isAdmin, setupForms, getToken };
- })();
|