29 lines
800 B
TypeScript
29 lines
800 B
TypeScript
// app/login/actions.ts
|
|
|
|
'use server';
|
|
|
|
import { cookies } from 'next/headers';
|
|
import { redirect } from 'next/navigation';
|
|
|
|
export async function loginAction(prevState: { success?: boolean } | null | unknown, formData: FormData) {
|
|
const password = formData.get('password');
|
|
|
|
if (password === process.env.ADMIN_PASSWORD) {
|
|
const cookieStore = await cookies();
|
|
cookieStore.set('admin_session', 'true', {
|
|
httpOnly: true,
|
|
secure: true,
|
|
sameSite: 'strict',
|
|
maxAge: 60 * 60 * 24 // 24 timmar
|
|
});
|
|
redirect('/admin');
|
|
}
|
|
|
|
return { error: 'Felaktigt lösenord' };
|
|
}
|
|
|
|
export async function logoutAction() {
|
|
const cookieStore = await cookies();
|
|
cookieStore.delete('admin_session');
|
|
redirect('/login');
|
|
} |