u
This commit is contained in:
@@ -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 }),
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user