Fix sessions, start profile UI and add middleware

This commit is contained in:
2024-11-06 17:38:15 +01:00
parent b3fae0b5db
commit a392841012
14 changed files with 74 additions and 26 deletions

View File

@@ -1,6 +1,6 @@
import useDatabase from "~/composables/useDatabase";
import { userSessionsTable as sessions } from "~/db/schema";
import { eq, and } from "drizzle-orm";
import { userSessionsTable } from "~/db/schema";
import { eq, and, sql } from "drizzle-orm";
const monthAsMs = 60 * 60 * 24 * 30 * 1000;
@@ -8,12 +8,7 @@ export default defineNitroPlugin(() => {
const db = useDatabase();
sessionHooks.hook('fetch', async (session, event) => {
const result = await db.query.userSessionsTable.findFirst({
columns: {
timestamp: true,
},
where: and(eq(sessions.id, session.id as unknown as number), eq(sessions.user_id, session.user.id))
});
const result = db.select({ timestamp: userSessionsTable.timestamp }).from(userSessionsTable).where(and(eq(userSessionsTable.id, sql.placeholder('id')), eq(userSessionsTable.user_id, sql.placeholder('user_id')))).prepare().get({ id: session.id, user_id: session.user.id });
if(!result)
{
@@ -27,9 +22,9 @@ export default defineNitroPlugin(() => {
}
else
{
await db.update(sessions).set({
await db.update(userSessionsTable).set({
timestamp: new Date(),
}).where(and(eq(sessions.id, session.id as unknown as number), eq(sessions.user_id, session.user.id)));
}).where(and(eq(userSessionsTable.id, sql.placeholder('id')), eq(userSessionsTable.user_id, sql.placeholder('user_id')))).prepare().run({ id: session.id, user_id: session.user.id });
}
});
sessionHooks.hook('clear', async (session, event) => {
@@ -37,7 +32,7 @@ export default defineNitroPlugin(() => {
{
try
{
await db.delete(sessions).where(and(eq(sessions.id, session.id as unknown as number), eq(sessions.user_id, session.user.id)));
db.delete(userSessionsTable).where(and(eq(userSessionsTable.id, sql.placeholder('id')), eq(userSessionsTable.user_id, sql.placeholder('user_id')))).prepare().run({ id: session.id, user_id: session.user.id });
}
catch(e) { }
}