1- import type { Provider } from "next-auth/providers" ;
21import { env } from "@/env.mjs" ;
32import GitHub from "next-auth/providers/github" ;
43import Google from "next-auth/providers/google" ;
@@ -14,68 +13,63 @@ import { onCreateUser } from "@/lib/authUtils";
1413import { createLogger } from "@sourcebot/logger" ;
1514import { hasEntitlement , loadConfig } from "@sourcebot/shared" ;
1615import { getTokenFromConfig } from "@sourcebot/crypto" ;
16+ import type { IdentityProvider } from "@/auth" ;
1717import { GCPIAPIdentityProviderConfig , GitHubIdentityProviderConfig , GitLabIdentityProviderConfig , GoogleIdentityProviderConfig , KeycloakIdentityProviderConfig , MicrosoftEntraIDIdentityProviderConfig , OktaIdentityProviderConfig } from "@sourcebot/schemas/v3/index.type" ;
1818
1919const logger = createLogger ( 'web-sso' ) ;
2020
21- export const getSSOProviders = async ( ) : Promise < Provider [ ] > => {
22- const providers : Provider [ ] = [ ] ;
21+ export const getEEIdentityProviders = async ( ) : Promise < IdentityProvider [ ] > => {
22+ const providers : IdentityProvider [ ] = [ ] ;
2323
2424 const config = env . CONFIG_PATH ? await loadConfig ( env . CONFIG_PATH ) : undefined ;
2525 const identityProviders = config ?. identityProviders ?? [ ] ;
2626
2727 for ( const identityProvider of identityProviders ) {
2828 if ( identityProvider . provider === "github" ) {
2929 const providerConfig = identityProvider as GitHubIdentityProviderConfig ;
30- if ( providerConfig . purpose !== "sso" ) {
31- continue ;
32- }
3330 const clientId = await getTokenFromConfig ( providerConfig . clientId ) ;
3431 const clientSecret = await getTokenFromConfig ( providerConfig . clientSecret ) ;
3532 const baseUrl = providerConfig . baseUrl ? await getTokenFromConfig ( providerConfig . baseUrl ) : undefined ;
36- providers . push ( createGitHubProvider ( clientId , clientSecret , baseUrl ) ) ;
33+ providers . push ( { provider : createGitHubProvider ( clientId , clientSecret , baseUrl ) , purpose : providerConfig . purpose } ) ;
3734 }
3835 if ( identityProvider . provider === "gitlab" ) {
3936 const providerConfig = identityProvider as GitLabIdentityProviderConfig ;
40- if ( providerConfig . purpose !== "sso" ) {
41- continue ;
42- }
4337 const clientId = await getTokenFromConfig ( providerConfig . clientId ) ;
4438 const clientSecret = await getTokenFromConfig ( providerConfig . clientSecret ) ;
4539 const baseUrl = providerConfig . baseUrl ? await getTokenFromConfig ( providerConfig . baseUrl ) : undefined ;
46- providers . push ( createGitLabProvider ( clientId , clientSecret , baseUrl ) ) ;
40+ providers . push ( { provider : createGitLabProvider ( clientId , clientSecret , baseUrl ) , purpose : providerConfig . purpose } ) ;
4741 }
4842 if ( identityProvider . provider === "google" ) {
4943 const providerConfig = identityProvider as GoogleIdentityProviderConfig ;
5044 const clientId = await getTokenFromConfig ( providerConfig . clientId ) ;
5145 const clientSecret = await getTokenFromConfig ( providerConfig . clientSecret ) ;
52- providers . push ( createGoogleProvider ( clientId , clientSecret ) ) ;
46+ providers . push ( { provider : createGoogleProvider ( clientId , clientSecret ) , purpose : "sso" } ) ;
5347 }
5448 if ( identityProvider . provider === "okta" ) {
5549 const providerConfig = identityProvider as OktaIdentityProviderConfig ;
5650 const clientId = await getTokenFromConfig ( providerConfig . clientId ) ;
5751 const clientSecret = await getTokenFromConfig ( providerConfig . clientSecret ) ;
5852 const issuer = await getTokenFromConfig ( providerConfig . issuer ) ;
59- providers . push ( createOktaProvider ( clientId , clientSecret , issuer ) ) ;
53+ providers . push ( { provider : createOktaProvider ( clientId , clientSecret , issuer ) , purpose : "sso" } ) ;
6054 }
6155 if ( identityProvider . provider === "keycloak" ) {
6256 const providerConfig = identityProvider as KeycloakIdentityProviderConfig ;
6357 const clientId = await getTokenFromConfig ( providerConfig . clientId ) ;
6458 const clientSecret = await getTokenFromConfig ( providerConfig . clientSecret ) ;
6559 const issuer = await getTokenFromConfig ( providerConfig . issuer ) ;
66- providers . push ( createKeycloakProvider ( clientId , clientSecret , issuer ) ) ;
60+ providers . push ( { provider : createKeycloakProvider ( clientId , clientSecret , issuer ) , purpose : "sso" } ) ;
6761 }
6862 if ( identityProvider . provider === "microsoft-entra-id" ) {
6963 const providerConfig = identityProvider as MicrosoftEntraIDIdentityProviderConfig ;
7064 const clientId = await getTokenFromConfig ( providerConfig . clientId ) ;
7165 const clientSecret = await getTokenFromConfig ( providerConfig . clientSecret ) ;
7266 const issuer = await getTokenFromConfig ( providerConfig . issuer ) ;
73- providers . push ( createMicrosoftEntraIDProvider ( clientId , clientSecret , issuer ) ) ;
67+ providers . push ( { provider : createMicrosoftEntraIDProvider ( clientId , clientSecret , issuer ) , purpose : "sso" } ) ;
7468 }
7569 if ( identityProvider . provider === "gcp-iap" ) {
7670 const providerConfig = identityProvider as GCPIAPIdentityProviderConfig ;
7771 const audience = await getTokenFromConfig ( providerConfig . audience ) ;
78- providers . push ( createGCPIAPProvider ( audience ) ) ;
72+ providers . push ( { provider : createGCPIAPProvider ( audience ) , purpose : "sso" } ) ;
7973 }
8074 }
8175
0 commit comments