All checks were successful
Docker Deploy / build-and-push (push) Successful in 3m55s
30 lines
841 B
TypeScript
30 lines
841 B
TypeScript
import type { APIRoute } from "astro";
|
|
import { db } from "../../../db";
|
|
import { users } from "../../../db/schema";
|
|
import { verifyPassword, setAuthCookie } from "../../../lib/auth";
|
|
import { eq } from "drizzle-orm";
|
|
|
|
export const POST: APIRoute = async ({ request, cookies, redirect }) => {
|
|
const formData = await request.formData();
|
|
const email = formData.get("email")?.toString();
|
|
const password = formData.get("password")?.toString();
|
|
|
|
if (!email || !password) {
|
|
return redirect("/login?error=missing_fields");
|
|
}
|
|
|
|
const user = await db
|
|
.select()
|
|
.from(users)
|
|
.where(eq(users.email, email))
|
|
.get();
|
|
|
|
if (!user || !(await verifyPassword(password, user.passwordHash))) {
|
|
return redirect("/login?error=invalid_credentials");
|
|
}
|
|
|
|
setAuthCookie(cookies, user.id);
|
|
|
|
return redirect("/dashboard");
|
|
};
|