From f2260ba8fb44b625d5e1f00dac3d0a14e742189c Mon Sep 17 00:00:00 2001 From: alma Date: Sat, 3 May 2025 17:18:43 +0200 Subject: [PATCH] equipes keycloak flow --- app/api/users/[userId]/roles/route.ts | 16 ++++++++++++++++ lib/keycloak.ts | 12 ++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/api/users/[userId]/roles/route.ts b/app/api/users/[userId]/roles/route.ts index e34da2dd..f806537f 100644 --- a/app/api/users/[userId]/roles/route.ts +++ b/app/api/users/[userId]/roles/route.ts @@ -35,6 +35,14 @@ export async function GET( if (!process.env.KEYCLOAK_ADMIN_PASSWORD) missingVars.push('KEYCLOAK_ADMIN_PASSWORD'); if (!process.env.KEYCLOAK_REALM) missingVars.push('KEYCLOAK_REALM'); + // Note: Client secret might be required depending on client configuration + console.log('Keycloak client config:', { + clientId: process.env.KEYCLOAK_CLIENT_ID, + hasClientSecret: !!process.env.KEYCLOAK_CLIENT_SECRET, + username: process.env.KEYCLOAK_ADMIN_USERNAME, + realm: process.env.KEYCLOAK_REALM, + }); + if (missingVars.length > 0) { console.error(`Missing Keycloak environment variables: ${missingVars.join(', ')}`); return NextResponse.json( @@ -106,6 +114,14 @@ export async function PUT( if (!process.env.KEYCLOAK_ADMIN_PASSWORD) missingVars.push('KEYCLOAK_ADMIN_PASSWORD'); if (!process.env.KEYCLOAK_REALM) missingVars.push('KEYCLOAK_REALM'); + // Note: Client secret might be required depending on client configuration + console.log('Keycloak client config:', { + clientId: process.env.KEYCLOAK_CLIENT_ID, + hasClientSecret: !!process.env.KEYCLOAK_CLIENT_SECRET, + username: process.env.KEYCLOAK_ADMIN_USERNAME, + realm: process.env.KEYCLOAK_REALM, + }); + if (missingVars.length > 0) { console.error(`Missing Keycloak environment variables: ${missingVars.join(', ')}`); return NextResponse.json( diff --git a/lib/keycloak.ts b/lib/keycloak.ts index d2a0b584..5566097e 100644 --- a/lib/keycloak.ts +++ b/lib/keycloak.ts @@ -26,6 +26,7 @@ export async function getKeycloakAdminClient(): Promise { const adminClientId = process.env.KEYCLOAK_CLIENT_ID; const adminUsername = process.env.KEYCLOAK_ADMIN_USERNAME; const adminPassword = process.env.KEYCLOAK_ADMIN_PASSWORD; + const clientSecret = process.env.KEYCLOAK_CLIENT_SECRET; const realmName = process.env.KEYCLOAK_REALM; // Validate required environment variables @@ -54,12 +55,19 @@ export async function getKeycloakAdminClient(): Promise { }); // Authenticate admin client - await kcAdminClient.auth({ + const authParams: Credentials = { clientId: adminClientId, username: adminUsername, password: adminPassword, grantType: 'password', - } as Credentials); + }; + + // Add client secret if available + if (clientSecret) { + authParams.clientSecret = clientSecret; + } + + await kcAdminClient.auth(authParams); console.log('Successfully authenticated with Keycloak admin client');