From 4a50b4b4f1a257ce9d38e7878efd5ee5f3c78511 Mon Sep 17 00:00:00 2001 From: Andrea Vos Date: Sat, 7 May 2022 09:36:48 -0500 Subject: [PATCH] [user] reload $user when opening /account (some old avatars lagging behind in the token on other locales) --- components/Account.vue | 4 ++++ server/routes/user.js | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/components/Account.vue b/components/Account.vue index 84e44d409..7114752f0 100644 --- a/components/Account.vue +++ b/components/Account.vue @@ -226,6 +226,10 @@ async mounted() { this.profiles = (await this.$axios.$get(`/profile/get/${this.$user().username}`)).profiles; this.socialConnections = await this.$axios.$get(`/user/social-connections`); + const user = await this.$axios.$get(`/user/current`); + if (user) { + this.$store.commit('setToken', user.token); + } if (process.client) { const redirectTo = window.sessionStorage.getItem('after-login'); diff --git a/server/routes/user.js b/server/routes/user.js index b9b008694..d2c63379d 100644 --- a/server/routes/user.js +++ b/server/routes/user.js @@ -250,6 +250,27 @@ const router = Router(); router.use(handleErrorAsync(reloadUser)); +router.get('/user/current', handleErrorAsync(async (req, res) => { + if (!req.user) { + res.clearCookie('token'); + return res.json(null); + } + + let dbUser = await req.db.get(SQL`SELECT * FROM users WHERE id = ${req.user.id}`); + + if (!dbUser) { + res.clearCookie('token'); + return res.json(null); + } + + const token = await issueAuthentication(req.db, dbUser, false); + res.cookie('token', token, cookieSettings); + req.rawUser = jwt.validate(token); + req.user = req.rawUser; + + return res.json({...req.user, token}); +})); + router.post('/user/init', handleErrorAsync(async (req, res) => { if (req.body.usernameOrEmail && isSpam(req.body.usernameOrEmail || '')) { req.socket.end();