diff --git a/packages/supabase/src/auth-callback.service.ts b/packages/supabase/src/auth-callback.service.ts index c1d8126..c7f1760 100644 --- a/packages/supabase/src/auth-callback.service.ts +++ b/packages/supabase/src/auth-callback.service.ts @@ -206,14 +206,7 @@ class AuthCallbackService { return; } - // If user already has Medusa account, we're done - if (accountData?.medusa_account_id) { - console.log('Keycloak user already has Medusa account:', accountData.medusa_account_id); - return; - } - const { medusaLoginOrRegister } = await import('../../features/medusa-storefront/src/lib/data/customer'); - const medusaAccountId = await medusaLoginOrRegister({ email: user.email, supabaseUserId: user.id, @@ -221,20 +214,24 @@ class AuthCallbackService { lastName: accountData?.last_name ?? '-', }); - // Update the account with the Medusa account ID - const { error: updateError } = await this.client - .schema('medreport') - .from('accounts') - .update({ medusa_account_id: medusaAccountId }) - .eq('primary_owner_user_id', user.id) - .eq('is_personal_account', true); + const currentMedusaAccountId = accountData?.medusa_account_id; + if (!currentMedusaAccountId || currentMedusaAccountId !== medusaAccountId) { + const { error: updateError } = await this.client + .schema('medreport') + .from('accounts') + .update({ medusa_account_id: medusaAccountId }) + .eq('primary_owner_user_id', user.id) + .eq('is_personal_account', true); - if (updateError) { - console.error('Error updating account with Medusa ID:', updateError); - return; + if (updateError) { + console.error('Error updating account with Medusa ID:', updateError); + return; + } + + console.log('Successfully set up Medusa account for Keycloak user:', medusaAccountId); + } else { + console.log('Keycloak user already has Medusa account:', accountData.medusa_account_id); } - - console.log('Successfully set up Medusa account for Keycloak user:', medusaAccountId); } catch (error) { console.error('Error setting up Medusa account for Keycloak user:', error); }