Files
novalon-website/src/lib/auth/session.ts
T
张翔 b207bfa7af feat: 增加测试覆盖率并优化代码质量
test: 添加单元测试和端到端测试
refactor: 重构登录页面和上传模块
ci: 更新测试覆盖率阈值至42%
build: 添加测试相关依赖
docs: 更新测试文档
style: 修复代码格式问题
2026-03-11 11:14:37 +08:00

42 lines
985 B
TypeScript

export interface SessionData {
userId: string;
role?: string;
}
export interface Session extends SessionData {
createdAt: number;
expiresAt: number;
}
export function createSession(userData: SessionData): Session {
return {
...userData,
createdAt: Date.now(),
expiresAt: Date.now() + (24 * 60 * 60 * 1000),
};
}
export function isSessionValid(session: Session): boolean {
return Date.now() < session.expiresAt;
}
export function getSessionAge(session: Session): number {
return Date.now() - session.createdAt;
}
export function getSessionTimeRemaining(session: Session): number {
return Math.max(0, session.expiresAt - Date.now());
}
export function isSessionExpired(session: Session): boolean {
return Date.now() >= session.expiresAt;
}
export function createSessionWithCustomExpiration(userData: SessionData, expiresInMs: number): Session {
return {
...userData,
createdAt: Date.now(),
expiresAt: Date.now() + expiresInMs,
};
}