From 12ca6090468e2163f1780fd7288b0bccee5f7239 Mon Sep 17 00:00:00 2001 From: jelveh Date: Wed, 4 Dec 2024 15:13:54 -0800 Subject: [PATCH] invalidate user cache when hitting `/get-dev-profile` --- src/backend/src/routers/get-dev-profile.js | 24 ++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/backend/src/routers/get-dev-profile.js b/src/backend/src/routers/get-dev-profile.js index 3b297d0df..f97c55605 100644 --- a/src/backend/src/routers/get-dev-profile.js +++ b/src/backend/src/routers/get-dev-profile.js @@ -33,15 +33,27 @@ router.get('/get-dev-profile', auth, express.json(), async (req, response, next) // check if user is verified if((config.strict_email_verification_required || req.user.requires_email_confirmation) && !req.user.email_confirmed) return response.status(400).send({code: 'account_is_not_verified', message: 'Account is not verified'}); - + + // TODO: we currently invalidate the cache on every request, this is because a developer may + // have been approved for the incentive program from one server, but the cache on another server + // may not have been updated yet. This is a temporary solution until we implement a better way to + // handle this. The better way would be for different servers to communicate with each other + // when a developer is approved for the incentive program (or any other change that affects the + // cache) and update the cache on all servers. + require('../helpers').invalidate_cached_user(req.user); + const { get_user } = require('../helpers'); + + let dev = await get_user(req.user); + dev = dev ?? {}; + try{ // auth response.send({ - first_name: req.user.dev_first_name, - last_name: req.user.dev_last_name, - approved_for_incentive_program: req.user.dev_approved_for_incentive_program, - joined_incentive_program: req.user.dev_joined_incentive_program, - paypal: req.user.dev_paypal, + first_name: dev.dev_first_name, + last_name: dev.dev_last_name, + approved_for_incentive_program: dev.dev_approved_for_incentive_program, + joined_incentive_program: dev.dev_joined_incentive_program, + paypal: dev.dev_paypal, }); }catch(e){ console.log(e)