@@ -17,12 +17,10 @@ import {
17
17
} from "@dub/ui" ;
18
18
import { SAML_PROVIDERS } from "@dub/utils" ;
19
19
import { Lock , ShieldOff } from "lucide-react" ;
20
- import { useSession } from "next-auth/react" ;
21
20
import { useMemo , useState } from "react" ;
22
21
23
22
export function SAML ( ) {
24
- const { data : session } = useSession ( ) ;
25
- const { id : workspaceId , plan } = useWorkspace ( ) ;
23
+ const { id : workspaceId , plan, ssoEmailDomain } = useWorkspace ( ) ;
26
24
const { SAMLModal, setShowSAMLModal } = useSAMLModal ( ) ;
27
25
const { RemoveSAMLModal, setShowRemoveSAMLModal } = useRemoveSAMLModal ( ) ;
28
26
const { provider, configured, loading } = useSAML ( ) ;
@@ -33,7 +31,7 @@ export function SAML() {
33
31
isLoading,
34
32
update,
35
33
} = useOptimisticUpdate < {
36
- ssoEmailDomain : string | null ;
34
+ ssoEnforcedAt : string | null ;
37
35
} > ( `/api/workspaces/${ workspaceId } ` , {
38
36
loading : "Saving SAML SSO login setting..." ,
39
37
success : "SAML SSO login setting has been updated successfully." ,
@@ -96,17 +94,16 @@ export function SAML() {
96
94
const { error } = await response . json ( ) ;
97
95
throw new Error ( error . message || "Failed to update workspace." ) ;
98
96
}
97
+
99
98
const data = await response . json ( ) ;
100
99
101
100
return {
102
- ssoEmailDomain : data . ssoEmailDomain ,
101
+ ssoEnforcedAt : data . ssoEnforcedAt ,
103
102
} ;
104
103
} ;
105
104
106
105
await update ( updateWorkspace , {
107
- ssoEmailDomain : workspaceData ?. ssoEmailDomain
108
- ? null
109
- : session ?. user ?. email ?. split ( "@" ) [ 1 ] || "domain.com" , // fallback to dummy domain for optimistic update
106
+ ssoEnforcedAt : enforceSAML ? new Date ( ) . toISOString ( ) : null ,
110
107
} ) ;
111
108
} ;
112
109
@@ -208,18 +205,18 @@ export function SAML() {
208
205
Require workspace members to login with SAML to access this
209
206
workspace
210
207
</ label >
211
- { workspaceData ?. ssoEmailDomain && (
208
+ { workspaceData ?. ssoEnforcedAt && (
212
209
< Badge
213
210
variant = "blueGradient"
214
211
className = "flex items-center gap-1"
215
212
>
216
213
< Globe2 className = "size-3" />
217
- { workspaceData . ssoEmailDomain }
214
+ { ssoEmailDomain }
218
215
</ Badge >
219
216
) }
220
217
</ div >
221
218
< Switch
222
- checked = { ! ! workspaceData ?. ssoEmailDomain }
219
+ checked = { workspaceData ?. ssoEnforcedAt !== null }
223
220
loading = { isLoading }
224
221
disabled = { plan !== "enterprise" }
225
222
fn = { handleSSOEnforcementChange }
0 commit comments