You've already forked obsidian-visualiser
Starting to put back the server part. Currently the registration and login are almost ready.
This commit is contained in:
34
server/utils/user.ts
Normal file
34
server/utils/user.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { eq, sql, and } from "drizzle-orm";
|
||||
import useDatabase from "~/composables/useDatabase";
|
||||
import { userSessionsTable } from "~/db/schema";
|
||||
import type { Return } from "~/types/api";
|
||||
import type { UserSession, UserSessionRequired } from "~/types/auth";
|
||||
|
||||
export function checkSession(e: H3Event<EventRequestHandler>, session: UserSession): Return | undefined
|
||||
{
|
||||
const db = useDatabase();
|
||||
|
||||
if(session.id && session.user?.id)
|
||||
{
|
||||
const sessionId = db.select({ user_id: userSessionsTable.user_id }).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(sessionId && sessionId.user_id === session.user?.id)
|
||||
{
|
||||
return { success: true, session };
|
||||
}
|
||||
else
|
||||
{
|
||||
clearUserSession(e);
|
||||
|
||||
setResponseStatus(e, 406);
|
||||
return { success: false, error: new Error('Vous êtes déjà connecté') };
|
||||
}
|
||||
}
|
||||
}
|
||||
export function logSession(e: H3Event<EventRequestHandler>, session: UserSessionRequired): UserSessionRequired
|
||||
{
|
||||
const db = useDatabase();
|
||||
|
||||
db.insert(userSessionsTable).values({ id: sql.placeholder('id'), user_id: sql.placeholder('user_id'), timestamp: sql.placeholder('timestamp') }).prepare().execute({ id: session.id, user_id: session.user.id, timestamp: new Date()});
|
||||
return session;
|
||||
}
|
||||
Reference in New Issue
Block a user