@@ -81,28 +81,33 @@ export const POST = withRouteHandler(async (request: NextRequest) => {
8181 return orgId ? provider . organizationId === orgId : false
8282 }
8383
84- const existingProviders = await db
85- . select ( {
86- userId : ssoProvider . userId ,
87- organizationId : ssoProvider . organizationId ,
88- } )
89- . from ( ssoProvider )
90- . where ( sql `lower(${ ssoProvider . domain } ) = ${ domain } ` )
91- const conflictingProvider = existingProviders . find ( ( provider ) => ! isOwnedByCaller ( provider ) )
84+ const findDomainConflict = async ( ) =>
85+ (
86+ await db
87+ . select ( {
88+ userId : ssoProvider . userId ,
89+ organizationId : ssoProvider . organizationId ,
90+ } )
91+ . from ( ssoProvider )
92+ . where ( sql `lower(${ ssoProvider . domain } ) = ${ domain } ` )
93+ ) . find ( ( provider ) => ! isOwnedByCaller ( provider ) )
9294
93- if ( conflictingProvider ) {
94- logger . warn ( 'Rejected SSO registration for domain owned by another tenant' , {
95- domain,
96- orgId,
97- userId : session . user . id ,
98- } )
99- return NextResponse . json (
95+ const domainConflictResponse = ( ) =>
96+ NextResponse . json (
10097 {
10198 error : 'This domain is already registered for SSO by another organization.' ,
10299 code : 'SSO_DOMAIN_ALREADY_REGISTERED' ,
103100 } ,
104101 { status : 409 }
105102 )
103+
104+ if ( await findDomainConflict ( ) ) {
105+ logger . warn ( 'Rejected SSO registration for domain owned by another tenant' , {
106+ domain,
107+ orgId,
108+ userId : session . user . id ,
109+ } )
110+ return domainConflictResponse ( )
106111 }
107112
108113 const headers : Record < string , string > = { }
@@ -446,6 +451,15 @@ export const POST = withRouteHandler(async (request: NextRequest) => {
446451 ) ,
447452 } )
448453
454+ if ( await findDomainConflict ( ) ) {
455+ logger . warn ( 'Rejected SSO registration: domain was claimed during registration' , {
456+ domain,
457+ orgId,
458+ userId : session . user . id ,
459+ } )
460+ return domainConflictResponse ( )
461+ }
462+
449463 const registration = await auth . api . registerSSOProvider ( {
450464 body : providerConfig ,
451465 headers,
0 commit comments