update widget token mail 8

This commit is contained in:
Alma 2025-04-09 23:36:12 +02:00
parent 4ac8ee20eb
commit 5c1a525fd4

View File

@ -19,13 +19,51 @@ export async function GET() {
return NextResponse.json({ error: "No access token found" }, { status: 401 }); return NextResponse.json({ error: "No access token found" }, { status: 401 });
} }
// First, get user info using the OAuth token with additional headers // First get the username from Keycloak
const keycloakResponse = await fetch(
`${process.env.KEYCLOAK_BASE_URL}/realms/${process.env.KEYCLOAK_REALM}/protocol/openid-connect/userinfo`,
{
headers: {
'Authorization': `Bearer ${session.accessToken}`
}
}
);
if (!keycloakResponse.ok) {
console.error('Failed to get Keycloak user info:', {
status: keycloakResponse.status,
statusText: keycloakResponse.statusText,
response: await keycloakResponse.text().catch(() => 'Could not get response text')
});
return NextResponse.json(
{ error: "Failed to get user info from Keycloak" },
{ status: keycloakResponse.status }
);
}
const keycloakUser = await keycloakResponse.json();
const username = keycloakUser.preferred_username;
console.log('Keycloak user info:', {
username,
sub: keycloakUser.sub
});
if (!username) {
return NextResponse.json(
{ error: "No username found in Keycloak user info" },
{ status: 400 }
);
}
// Now get user info from Rocket.Chat using the Keycloak username
const meResponse = await fetch('https://parole.slm-lab.net/api/v1/me', { const meResponse = await fetch('https://parole.slm-lab.net/api/v1/me', {
headers: { headers: {
'Authorization': `Bearer ${session.accessToken}`, 'Authorization': `Bearer ${session.accessToken}`,
'X-Auth-Token': session.accessToken, 'X-Auth-Token': session.accessToken,
'X-User-Id': session.user.id, 'X-User-Id': keycloakUser.sub,
'X-Oauth-User': session.user.username || session.user.email?.split('@')[0] || '', 'X-Oauth-User': username,
'X-OAuth-Username': username
}, },
cache: 'no-store', cache: 'no-store',
}); });
@ -35,7 +73,8 @@ export async function GET() {
status: meResponse.status, status: meResponse.status,
statusText: meResponse.statusText, statusText: meResponse.statusText,
headers: { headers: {
'X-Oauth-User': session.user.username || session.user.email?.split('@')[0] || '', 'X-Oauth-User': username,
'X-OAuth-Username': username,
'Authorization': 'Bearer [hidden]' 'Authorization': 'Bearer [hidden]'
}, },
response: await meResponse.text().catch(() => 'Could not get response text') response: await meResponse.text().catch(() => 'Could not get response text')
@ -60,7 +99,8 @@ export async function GET() {
'Authorization': `Bearer ${session.accessToken}`, 'Authorization': `Bearer ${session.accessToken}`,
'X-Auth-Token': session.accessToken, 'X-Auth-Token': session.accessToken,
'X-User-Id': userData._id, 'X-User-Id': userData._id,
'X-Oauth-User': userData.username, 'X-Oauth-User': username,
'X-OAuth-Username': username
}, },
cache: 'no-store', cache: 'no-store',
} }
@ -95,7 +135,8 @@ export async function GET() {
'Authorization': `Bearer ${session.accessToken}`, 'Authorization': `Bearer ${session.accessToken}`,
'X-Auth-Token': session.accessToken, 'X-Auth-Token': session.accessToken,
'X-User-Id': userData._id, 'X-User-Id': userData._id,
'X-Oauth-User': userData.username, 'X-Oauth-User': username,
'X-OAuth-Username': username
}, },
cache: 'no-store', cache: 'no-store',
} }