Files
chronus/src/pages/api/auth/login.ts
Atridad Lahiji 705358d44c
All checks were successful
Docker Deploy / build-and-push (push) Successful in 3m55s
Please...
2026-02-13 11:18:20 -07:00

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");
};