1
1
import { useClerk } from '@clerk/shared/react' ;
2
- import type { OAuthProvider , SamlStrategy , Web3Provider } from '@clerk/types' ;
2
+ import type { EnterpriseSSOStrategy , OAuthProvider , SamlStrategy , Web3Provider } from '@clerk/types' ;
3
3
import type React from 'react' ;
4
4
import { useCallback } from 'react' ;
5
5
import type { ActorRef } from 'xstate' ;
@@ -11,21 +11,28 @@ import type { UseThirdPartyProviderReturn } from '~/react/common/connections';
11
11
import {
12
12
getEnabledThirdPartyProviders ,
13
13
isAuthenticatableOauthStrategy ,
14
+ isEnterpriseSSOStrategy ,
14
15
isSamlStrategy ,
15
16
isWeb3Strategy ,
16
17
providerToDisplayData ,
17
18
} from '~/utils/third-party-strategies' ;
18
19
19
- const useIsProviderEnabled = ( provider : OAuthProvider | Web3Provider | SamlStrategy ) : boolean | null => {
20
+ const useIsProviderEnabled = (
21
+ provider : OAuthProvider | Web3Provider | SamlStrategy | EnterpriseSSOStrategy ,
22
+ ) : boolean | null => {
20
23
const clerk = useClerk ( ) ;
21
24
22
25
// null indicates we don't know for sure
23
26
if ( ! clerk . loaded ) {
24
27
return null ;
25
28
}
26
29
27
- if ( provider === 'saml' ) {
28
- return clerk . __unstable__environment ?. userSettings . saml . enabled ?? false ;
30
+ if ( provider === 'saml' || provider === 'enterprise_sso' ) {
31
+ return (
32
+ clerk . __unstable__environment ?. userSettings . saml . enabled ??
33
+ clerk . __unstable__environment ?. userSettings . enterpriseSSO . enabled ??
34
+ false
35
+ ) ;
29
36
}
30
37
31
38
const data = getEnabledThirdPartyProviders ( clerk . __unstable__environment ) ;
@@ -40,16 +47,18 @@ export const useThirdPartyProvider = <
40
47
TActor extends ActorRef < any , SignInRouterEvents > | ActorRef < any , SignUpRouterEvents > ,
41
48
> (
42
49
ref : TActor ,
43
- provider : OAuthProvider | Web3Provider | SamlStrategy ,
50
+ provider : OAuthProvider | Web3Provider | SamlStrategy | EnterpriseSSOStrategy ,
44
51
) : UseThirdPartyProviderReturn => {
45
52
const isProviderEnabled = useIsProviderEnabled ( provider ) ;
46
53
const isSaml = isSamlStrategy ( provider ) ;
47
- const details = isSaml
48
- ? {
49
- name : 'SAML' ,
50
- strategy : 'saml' as SamlStrategy ,
51
- }
52
- : providerToDisplayData [ provider ] ;
54
+ const isEnterpriseSSO = isEnterpriseSSOStrategy ( provider ) ;
55
+ const details =
56
+ isEnterpriseSSO || isSaml
57
+ ? {
58
+ name : 'SSO' ,
59
+ strategy : provider ,
60
+ }
61
+ : providerToDisplayData [ provider ] ;
53
62
54
63
const authenticate = useCallback (
55
64
( event : React . MouseEvent < Element > ) => {
@@ -63,6 +72,10 @@ export const useThirdPartyProvider = <
63
72
return ref . send ( { type : 'AUTHENTICATE.SAML' } ) ;
64
73
}
65
74
75
+ if ( isEnterpriseSSO ) {
76
+ return ref . send ( { type : 'AUTHENTICATE.ENTERPRISE_SSO' } ) ;
77
+ }
78
+
66
79
if ( provider === 'metamask' ) {
67
80
return ref . send ( { type : 'AUTHENTICATE.WEB3' , strategy : 'web3_metamask_signature' } ) ;
68
81
}
@@ -77,7 +90,7 @@ export const useThirdPartyProvider = <
77
90
78
91
return ref . send ( { type : 'AUTHENTICATE.OAUTH' , strategy : `oauth_${ provider } ` } ) ;
79
92
} ,
80
- [ provider , isProviderEnabled , isSaml , ref ] ,
93
+ [ provider , isProviderEnabled , isSaml , isEnterpriseSSO , ref ] ,
81
94
) ;
82
95
83
96
if ( isProviderEnabled === false ) {
0 commit comments