amati/src/app/api/login/route.ts
sianida26 ad68fac107 lint
2024-02-28 18:25:14 +07:00

36 lines
1.1 KiB
TypeScript

import BaseError from "@/core/error/BaseError";
import handleCatchApi from "@/core/utils/handleCatchApi";
import AuthError from "@/modules/auth/error/AuthError";
import signInSchema from "@/modules/auth/formSchemas/signInSchema";
import signIn from "@/modules/auth/services/signIn";
import { NextRequest, NextResponse } from "next/server";
export const dynamic = "force-dynamic";
export async function POST(request: NextRequest) {
try {
if (request.headers.get("Content-Type") !== "application/json")
throw new BaseError({
errorCode: "UNSUPPORTED_CONTENT_TYPE",
message:
"This content type is not supported. Please use application/json instead",
statusCode: 400
});
const data = signInSchema.safeParse(await request.json());
if (!data.success){
throw new AuthError({
errorCode: "INVALID_CREDENTIALS",
message: "Email or Password does not match",
statusCode: 401
})
}
const result = await signIn(data.data)
return NextResponse.json(result);
} catch (e) {
return handleCatchApi(e)
}
}