"use server"; import { db } from "@/db"; import { users } from "@/db/schema"; import { eq } from "drizzle-orm"; import bcrypt from "bcryptjs"; import { cookies } from "next/headers"; import { redirect } from "next/navigation"; export async function login(formData: FormData) { const email = formData.get("email") as string; const password = formData.get("password") as string; if (!email || !password) { return { error: "Email and password are required" }; } const user = await db.query.users.findFirst({ where: eq(users.email, email), }); if (!user || user.role !== "admin") { return { error: "Invalid credentials or not an admin" }; } const passwordMatch = await bcrypt.compare(password, user.password); if (!passwordMatch) { return { error: "Invalid credentials" }; } const cookieStore = await cookies(); cookieStore.set("admin_session", "true", { httpOnly: true, secure: process.env.NODE_ENV === "production", maxAge: 60 * 60 * 24, // 1 day path: "/", }); redirect("/"); } export async function logout() { const cookieStore = await cookies(); cookieStore.delete("admin_session"); redirect("/login"); }