import { defineStore } from 'pinia'; interface User { id: string; email: string; fullName: string; role: 'INSTRUCTOR' | 'ADMIN' | 'STUDENT'; } export const useAuthStore = defineStore('auth', { state: () => ({ user: null as User | null, token: null as string | null, isAuthenticated: false }), getters: { isInstructor: (state) => state.user?.role === 'INSTRUCTOR', isAdmin: (state) => state.user?.role === 'ADMIN', isStudent: (state) => state.user?.role === 'STUDENT' }, actions: { async login(email: string, password: string) { // TODO: Replace with real API call // const { $api } = useNuxtApp(); // const response = await $api('/auth/login', { // method: 'POST', // body: { email, password } // }); // Mock login for development const mockUser: User = { id: '1', email: email, fullName: 'อาจารย์ทดสอบ', role: 'INSTRUCTOR' }; this.token = 'mock-jwt-token'; this.user = mockUser; this.isAuthenticated = true; // Save to localStorage if (process.client) { localStorage.setItem('token', this.token); localStorage.setItem('user', JSON.stringify(this.user)); } return { token: this.token, user: this.user }; }, logout() { this.user = null; this.token = null; this.isAuthenticated = false; if (process.client) { localStorage.removeItem('token'); localStorage.removeItem('user'); } }, checkAuth() { if (process.client) { const token = localStorage.getItem('token'); const user = localStorage.getItem('user'); if (token && user) { this.token = token; this.user = JSON.parse(user); this.isAuthenticated = true; } } } } });