boredgame/oldApis/reset-password/[token]/+server.ts

49 lines
1.4 KiB
TypeScript
Raw Normal View History

import { eq } from 'drizzle-orm'
import { isWithinExpirationDate } from 'oslo'
import { password_reset_tokens } from '../../../src/lib/server/api/databases/tables'
// import { lucia } from '$lib/server/lucia';
import { db } from '../../../src/lib/server/api/packages/drizzle'
export async function POST({ request, params }) {
const { password } = await request.json()
if (typeof password !== 'string' || password.length < 8) {
return new Response(null, {
status: 400,
})
}
const verificationToken = params.token
const token = await db.query.password_reset_tokens.findFirst({
where: eq(password_reset_tokens.id, verificationToken),
})
if (!token) {
await db.delete(password_reset_tokens).where(eq(password_reset_tokens.id, verificationToken))
return new Response(null, {
status: 400,
})
}
if (!token?.expires_at || !isWithinExpirationDate(token.expires_at)) {
return new Response(null, {
status: 400,
})
}
// await lucia.invalidateUserSessions(token.user_id);
// const hashPassword = await new Argon2id().hash(password);
// // await db.update(usersTable).set({ hashed_password: hashPassword }).where(eq(usersTable.id, token.user_id));
//
// const session = await lucia.createSession(token.user_id, {});
// const sessionCookie = lucia.createSessionCookie(session.id);
return new Response(null, {
status: 302,
headers: {
Location: '/',
'Set-Cookie': sessionCookie.serialize(),
},
})
}