37 lines
840 B
TypeScript
37 lines
840 B
TypeScript
import { eq } from "drizzle-orm";
|
|
import db from "../../db";
|
|
import { tokensTable, usersTable } from "../../db/schema";
|
|
import { error } from "elysia";
|
|
import { generateToken } from "../../utils/generateToken";
|
|
|
|
export default async function login({
|
|
email,
|
|
password,
|
|
}: {
|
|
email: string;
|
|
password: string;
|
|
}) {
|
|
try {
|
|
const user = await db.query.usersTable.findFirst({
|
|
where: eq(usersTable.email, email),
|
|
});
|
|
|
|
if (!user || !Bun.password.verifySync(password, user.password))
|
|
return error(401, { error: "Wrong credentials" });
|
|
|
|
const token = await generateToken(user.id);
|
|
|
|
await db.insert(tokensTable).values({
|
|
token,
|
|
userId: user.id,
|
|
});
|
|
|
|
return {
|
|
token,
|
|
};
|
|
} catch (err) {
|
|
console.log((err as Error).message);
|
|
return error(500, "Internal Server Error");
|
|
}
|
|
}
|