From f0513683e5e4e4d5922b5b3b774ee02cabd6e43b Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Sat, 21 Feb 2026 12:22:56 -0300 Subject: [PATCH] fix(qwen): extract email from id_token to allow multiple accounts --- src/lib/oauth/providers/qwen.ts | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/lib/oauth/providers/qwen.ts b/src/lib/oauth/providers/qwen.ts index a1cbf87f1a..0a31c09212 100644 --- a/src/lib/oauth/providers/qwen.ts +++ b/src/lib/oauth/providers/qwen.ts @@ -1,4 +1,5 @@ import { QWEN_CONFIG } from "../constants/oauth"; +import { decodeJwt } from "jose"; export const qwen = { config: QWEN_CONFIG, @@ -45,10 +46,27 @@ export const qwen = { data: await response.json(), }; }, - mapTokens: (tokens) => ({ - accessToken: tokens.access_token, - refreshToken: tokens.refresh_token, - expiresIn: tokens.expires_in, - providerSpecificData: { resourceUrl: tokens.resource_url }, - }), + mapTokens: (tokens) => { + let email = null; + let displayName = null; + if (tokens.id_token) { + try { + const decoded = decodeJwt(tokens.id_token); + email = decoded.email || decoded.preferred_username || null; + displayName = decoded.name || email; + } catch (e) { + // Ignore + } + } + + return { + accessToken: tokens.access_token, + refreshToken: tokens.refresh_token, + expiresIn: tokens.expires_in, + idToken: tokens.id_token, + email, + displayName, + providerSpecificData: { resourceUrl: tokens.resource_url }, + }; + }, };