From 19f2664a78dbdf8e13aeaff3f9100e8ddde00936 Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Tue, 8 Dec 2020 17:53:47 +0000 Subject: [PATCH] feat: Store user ID in sub claim of default JWT (#784) This allows us to check if the user is signed in when using JWTs Part of #625 --- src/server/lib/callback-handler.js | 4 ++-- src/server/routes/callback.js | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/server/lib/callback-handler.js b/src/server/lib/callback-handler.js index b4e4f7e356..6fdd052456 100644 --- a/src/server/lib/callback-handler.js +++ b/src/server/lib/callback-handler.js @@ -52,8 +52,8 @@ export default async (sessionToken, profile, providerAccount, options) => { if (useJwtSession) { try { session = await jwt.decode({ ...jwt, token: sessionToken }) - if (session && session.user) { - user = await getUser(session.user.id) + if (session && session.sub) { + user = await getUser(session.sub) isSignedIn = !!user } } catch (e) { diff --git a/src/server/routes/callback.js b/src/server/routes/callback.js index 9ce55161bb..138861e9c5 100644 --- a/src/server/routes/callback.js +++ b/src/server/routes/callback.js @@ -87,7 +87,8 @@ export default async (req, res, options, done) => { const defaultJwtPayload = { name: user.name, email: user.email, - picture: user.image + picture: user.image, + sub: user.id.toString() } const jwtPayload = await callbacks.jwt(defaultJwtPayload, user, account, OAuthProfile, isNewUser) @@ -177,7 +178,8 @@ export default async (req, res, options, done) => { const defaultJwtPayload = { name: user.name, email: user.email, - picture: user.image + picture: user.image, + sub: user.id.toString() } const jwtPayload = await callbacks.jwt(defaultJwtPayload, user, account, profile, isNewUser)