This commit is contained in:
seb
2026-07-31 05:54:13 +02:00
parent 6db7d4d75c
commit db8b192094
32 changed files with 100 additions and 2048 deletions

View File

@@ -6,17 +6,17 @@ import { meJson } from '../auth/meJson.js';
const userCache = new Map();
const USER_CACHE_TTL = 10 * 60 * 1000;
export function getCachedUser(id) {
const cached = userCache.get(id);
export function getCachedUser(email) {
const cached = userCache.get(email);
if (cached && cached.expiresAt > Date.now()) {
return cached.user;
}
userCache.delete(id);
userCache.delete(email);
return null;
}
export function setCachedUser(id, user) {
userCache.set(id, { user, expiresAt: Date.now() + USER_CACHE_TTL });
export function setCachedUser(email, user) {
userCache.set(email, { user, expiresAt: Date.now() + USER_CACHE_TTL });
if (userCache.size > 1000) {
const now = Date.now();
for (const [k, v] of userCache) {
@@ -25,8 +25,8 @@ export function setCachedUser(id, user) {
}
}
export function clearCachedUser(id) {
userCache.delete(id);
export function clearCachedUser(email) {
userCache.delete(email);
}
function authMeJson(res, req, status, body) {
@@ -51,10 +51,10 @@ export const authMiddleware = async (req, res, next) => {
try {
const decoded = jwt.verify(token, env.jwtSecret);
let user = getCachedUser(decoded.id);
let user = getCachedUser(decoded.email);
if (!user) {
user = db.getAllowedEmailById(decoded.id);
if (user) setCachedUser(decoded.id, user);
user = await db.getAllowedEmail(decoded.email);
if (user) setCachedUser(decoded.email, user);
}
if (!user) {
return authMeJson(res, req, 403, { error: 'User is no longer authorized' });
@@ -63,6 +63,7 @@ export const authMiddleware = async (req, res, next) => {
req.user = {
id: user.id,
email: user.email,
selectedCompanyId: user.selectedCompanyId,
...(decoded.picture && { picture: decoded.picture }),
};