'use server' import { supabase } from '@/lib/supabase' import { redirect } from 'next/navigation' import { cookies } from 'next/headers' export async function login(prevState: any, formData: FormData) { const username = formData.get('username') as string const password = formData.get('password') as string const remember = formData.get('remember') === 'on' if (!username || !password) { return { message: 'Username and password are required' } } try { // 1. Check Petugas (Admin - Role 1/Admin) const { data: petugas, error: petugasError } = await supabase .from('petugas_posyandu') .select('*') .eq('username', username) .eq('password', password) // Plain text password check as requested .single() if (petugas) { // Set session/cookie for Admin // In a real app, use a secure session library. For this demo, simple cookies. const cookieStore = await cookies() cookieStore.set('user_session', JSON.stringify({ id: petugas.id, role: 'admin', username: petugas.username, name: petugas.nama }), { secure: true, httpOnly: true, maxAge: remember ? 60 * 60 * 24 * 7 : 60 * 60 * 24 }) redirect('/dashboard') // Redirect to dashboard or appropriate page } // 2. Check Akun Balita (User - Role 2/User) const { data: user, error: userError } = await supabase .from('akun_balita') .select('*') .eq('username', username) .eq('password', password) // Plain text password check as requested .single() if (user) { // Set session/cookie for User const cookieStore = await cookies() cookieStore.set('user_session', JSON.stringify({ id: user.id, role: 'user', username: user.username, name: user.nama_orang_tua // Or nama_anak depending on preference }), { secure: true, httpOnly: true, maxAge: remember ? 60 * 60 * 24 * 7 : 60 * 60 * 24 }) redirect('/user-dashboard') // Redirect to user dashboard } return { message: 'Invalid username or password' } } catch (error: any) { if (error.message === 'NEXT_REDIRECT') { throw error } console.error('Login error:', error) return { message: 'An error occurred during login' } } } export async function logout() { const cookieStore = await cookies() cookieStore.delete('user_session') redirect('/') }