Skip to content

Commit deb3ec0

Browse files
committed
Reset multi auth to initial state
1 parent 0764cdb commit deb3ec0

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

Diff for: lib/auth.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,23 @@ export function checkMultiAuthCookies (req, res) {
106106
return true
107107
}
108108

109-
function resetMultiAuthCookies (req, res) {
109+
async function resetMultiAuthCookies (req, res) {
110110
const httpOnlyOptions = cookieOptions({ expires: 0, maxAge: 0 })
111111
const jsOptions = { ...httpOnlyOptions, httpOnly: false }
112112

113+
// remove all multi_auth cookies ...
113114
for (const key of Object.keys(req.cookies)) {
114115
if (!MULTI_AUTH_REGEXP.test(key)) continue
115116
const options = MULTI_AUTH_JWT_REGEXP.test(key) ? httpOnlyOptions : jsOptions
116117
res.appendHeader('Set-Cookie', cookie.serialize(key, '', options))
117118
}
119+
120+
// ... and reset to initial state if they are logged in
121+
const token = req.cookies[SESSION_COOKIE]
122+
if (!token) return
123+
124+
const decoded = await decodeJWT({ token, secret: process.env.NEXTAUTH_SECRET })
125+
setMultiAuthCookies(req, res, { ...decoded, jwt: token })
118126
}
119127

120128
async function refreshMultiAuthCookies (req, res) {
@@ -160,7 +168,7 @@ export async function multiAuthMiddleware (req, res) {
160168

161169
const ok = checkMultiAuthCookies(req, res)
162170
if (!ok) {
163-
resetMultiAuthCookies(req, res)
171+
await resetMultiAuthCookies(req, res)
164172
return switchSessionCookie(req)
165173
}
166174

0 commit comments

Comments
 (0)