Spaces:
Build error
Build error
File size: 1,459 Bytes
ef73937 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import { sessionRepository } from '@core/storage/repositories/sessions.js';
import { userRepository } from '@core/storage/repositories/users.js';
export interface SessionUser {
id: string;
username: string;
isAdmin: boolean;
isBanned: boolean;
}
export async function getSessionUser(sessionId: string): Promise<SessionUser | null> {
const session = await sessionRepository.findValidSession(sessionId);
if (!session) return null;
const user = await userRepository.findById(session.userId);
if (!user || user.isBanned) return null;
return {
id: user.id,
username: user.username,
isAdmin: user.isAdmin,
isBanned: user.isBanned,
};
}
export async function createUserSession(userId: string): Promise<string> {
const session = await sessionRepository.createSession(userId);
return session.id;
}
export async function destroySession(sessionId: string): Promise<void> {
await sessionRepository.deleteSession(sessionId);
}
export async function destroyAllUserSessions(userId: string): Promise<void> {
await sessionRepository.deleteUserSessions(userId);
}
export async function refreshSession(sessionId: string): Promise<boolean> {
const session = await sessionRepository.findValidSession(sessionId);
if (!session) return false;
const newExpiresAt = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString();
await sessionRepository.updateSession(sessionId, { expiresAt: newExpiresAt });
return true;
} |