export class AuthSystem { constructor() { this.storageKey = 'authData'; this.sessionDuration = 3600000; // 1 hour this.loadAuth(); } loadAuth() { const savedAuth = localStorage.getItem(this.storageKey); if (savedAuth) { const auth = JSON.parse(savedAuth); if (Date.now() - auth.timestamp < this.sessionDuration) { this.currentUser = auth.user; return; } localStorage.removeItem(this.storageKey); } this.currentUser = null; } async login(username, password) { try { // ในที่นี้ควรใช้ API จริงสำหรับการตรวจสอบ const hashedPassword = await this.hashPassword(password); if (this.validateCredentials(username, hashedPassword)) { this.currentUser = { username, role: 'admin', timestamp: Date.now() }; localStorage.setItem(this.storageKey, JSON.stringify(this.currentUser)); return true; } return false; } catch (error) { console.error('Login failed:', error); return false; } } logout() { this.currentUser = null; localStorage.removeItem(this.storageKey); } isAuthenticated() { return !!this.currentUser; } hasRole(role) { return this.currentUser?.role === role; } async hashPassword(password) { const encoder = new TextEncoder(); const data = encoder.encode(password); const hash = await crypto.subtle.digest('SHA-256', data); return Array.from(new Uint8Array(hash)) .map(b => b.toString(16).padStart(2, '0')) .join(''); } // ตรวจสอบ credentials (ในที่นี้เป็นตัวอย่าง) validateCredentials(username, hashedPassword) { // ควรใช้ระบบ authentication จริง return username === 'admin' && hashedPassword.length === 64; } }