import useDatabase from "~/composables/useDatabase"; import { Return } from "~/types/api"; import type { UserSession, UserSessionRequired } from "~/types/auth"; export async function checkSession(e: H3Event, session: UserSession): Promise { const db = useDatabase(); if(session.id && session.user?.id) { const checkSession = db.query("SELECT user_id FROM user_sessions WHERE id = ?1"); const sessionId = checkSession.get(session.id) as any; if(sessionId && sessionId.user_id === session.user?.id) { return { success: true, session }; } else { await clearUserSession(e); setResponseStatus(e, 406); return { success: false, error: new Error('Vous êtes déjà connecté') }; } } } export async function logSession(e: H3Event, session: UserSessionRequired): Promise { const db = useDatabase(); const loggingIn = db.query(`INSERT INTO user_sessions(id, user_id, ip, agent, last_refresh) VALUES(?1, ?2, ?3, ?4, ?5)`); loggingIn.get(session.id, session.user.id, getRequestIP(e) ?? null, getRequestHeader(e, 'User-Agent') ?? null, Date.now()); return session; }