Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 43 additions & 20 deletions packages/core/src/lib/actions/callback/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -358,31 +358,54 @@ export async function callback(
sub: user.id,
}

const token = await callbacks.jwt({
token: defaultToken,
user,
account,
isNewUser: false,
trigger: "signIn",
})
// If using JWT sessions, run the jwt callback and set JWT cookies
if (useJwtSession) {
const token = await callbacks.jwt({
token: defaultToken,
user,
account,
isNewUser: false,
trigger: "signIn",
})

// Clear cookies if token is null
if (token === null) {
cookies.push(...sessionStore.clean())
} else {
const salt = options.cookies.sessionToken.name
// Encode token
const newToken = await jwt.encode({ ...jwt, token, salt })
// Clear cookies if token is null
if (token === null) {
cookies.push(...sessionStore.clean())
} else {
const salt = options.cookies.sessionToken.name
// Encode token
const newToken = await jwt.encode({ ...jwt, token, salt })

// Set cookie expiry date
const cookieExpires = new Date()
cookieExpires.setTime(cookieExpires.getTime() + sessionMaxAge * 1000)
// Set cookie expiry date
const cookieExpires = new Date()
cookieExpires.setTime(cookieExpires.getTime() + sessionMaxAge * 1000)

const sessionCookies = sessionStore.chunk(newToken, {
expires: cookieExpires,
const sessionCookies = sessionStore.chunk(newToken, {
expires: cookieExpires,
})

cookies.push(...sessionCookies)
}
} else {
// Non-JWT (database) sessions: create a session in the adapter and set session cookie
if (!adapter) {
throw new AuthError("Adapter is required for database sessions")
}

const createdSession = await adapter.createSession({
sessionToken: options.session.generateSessionToken(),
userId: user.id,
expires: new Date(Date.now() + sessionMaxAge * 1000),
})

cookies.push(...sessionCookies)
cookies.push({
name: options.cookies.sessionToken.name,
value: createdSession.sessionToken,
options: {
...options.cookies.sessionToken.options,
expires: createdSession.expires,
},
})
}

await events.signIn?.({ user, account })
Expand Down