From 2b63cd3836581581116fe01b22b8fbff45b9907b Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Thu, 11 Jun 2026 20:14:14 +0530 Subject: [PATCH 1/6] feat: add corporate email policy toggle to auth security settings --- src/lib/actions/analytics.ts | 1 + .../auth/security/+page.svelte | 3 +- .../auth/security/+page.ts | 8 +++-- .../security/updateSignupEmailSecurity.svelte | 35 +++++++++++++++++-- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 04286611ee..3a8d89622a 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -277,6 +277,7 @@ export enum Submit { AuthAliasedEmailsUpdate = 'submit_auth_aliased_emails_update', AuthDisposableEmailsUpdate = 'submit_auth_disposable_emails_update', AuthFreeEmailsUpdate = 'submit_auth_free_emails_update', + AuthCorporateEmailsUpdate = 'submit_auth_corporate_emails_update', AuthSessionAlertsUpdate = 'submit_auth_session_alerts_update', AuthMembershipPrivacyUpdate = 'submit_auth_membership_privacy_update', AuthMockNumbersUpdate = 'submit_auth_mock_numbers_update', diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/+page.svelte index 3bc8b22f79..8cc0749d3b 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/+page.svelte @@ -28,7 +28,8 @@ project={data.project} denyAliasedEmailPolicy={data.denyAliasedEmailPolicy} denyDisposableEmailPolicy={data.denyDisposableEmailPolicy} - denyFreeEmailPolicy={data.denyFreeEmailPolicy} /> + denyFreeEmailPolicy={data.denyFreeEmailPolicy} + denyCorporateEmailPolicy={data.denyCorporateEmailPolicy} /> { getDefaultEnabledPolicy(ProjectEmailPolicyId.DenyDisposableEmail), denyFreeEmailPolicy: (policiesById[ProjectEmailPolicyId.DenyFreeEmail] as EnabledPolicy) ?? - getDefaultEnabledPolicy(ProjectEmailPolicyId.DenyFreeEmail) + getDefaultEnabledPolicy(ProjectEmailPolicyId.DenyFreeEmail), + denyCorporateEmailPolicy: + (policiesById[ProjectEmailPolicyId.DenyCorporateEmail] as EnabledPolicy) ?? + getDefaultEnabledPolicy(ProjectEmailPolicyId.DenyCorporateEmail) }; }; diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte index 35633cb7c0..4705300b82 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte @@ -18,32 +18,38 @@ project, denyAliasedEmailPolicy, denyDisposableEmailPolicy, - denyFreeEmailPolicy + denyFreeEmailPolicy, + denyCorporateEmailPolicy }: { project: Models.Project; denyAliasedEmailPolicy: EnabledPolicy; denyDisposableEmailPolicy: EnabledPolicy; denyFreeEmailPolicy: EnabledPolicy; + denyCorporateEmailPolicy: EnabledPolicy; } = $props(); const getInitialAliasedEmails = () => denyAliasedEmailPolicy.enabled; const getInitialDisposableEmails = () => denyDisposableEmailPolicy.enabled; const getInitialFreeEmails = () => denyFreeEmailPolicy.enabled; + const getInitialCorporateEmails = () => denyCorporateEmailPolicy.enabled; let savedAliasedEmails = $state(getInitialAliasedEmails()); let savedDisposableEmails = $state(getInitialDisposableEmails()); let savedFreeEmails = $state(getInitialFreeEmails()); + let savedCorporateEmails = $state(getInitialCorporateEmails()); let authAliasedEmails = $state(getInitialAliasedEmails()); let authDisposableEmails = $state(getInitialDisposableEmails()); let authFreeEmails = $state(getInitialFreeEmails()); + let authCorporateEmails = $state(getInitialCorporateEmails()); const hasChanges = $derived.by(() => { const aliasedChanged = authAliasedEmails !== savedAliasedEmails; const disposableChanged = authDisposableEmails !== savedDisposableEmails; const freeChanged = authFreeEmails !== savedFreeEmails; + const corporateChanged = authCorporateEmails !== savedCorporateEmails; - return aliasedChanged || disposableChanged || freeChanged; + return aliasedChanged || disposableChanged || freeChanged || corporateChanged; }); async function updateSignupEmailSecurity() { @@ -80,9 +86,19 @@ trackEvent(Submit.AuthFreeEmailsUpdate); } + if (authCorporateEmails !== savedCorporateEmails) { + currentSubmit = Submit.AuthCorporateEmailsUpdate; + await projectSdk.updateDenyCorporateEmailPolicy({ + enabled: authCorporateEmails + }); + hasAppliedServerChange = true; + trackEvent(Submit.AuthCorporateEmailsUpdate); + } + savedAliasedEmails = authAliasedEmails; savedDisposableEmails = authDisposableEmails; savedFreeEmails = authFreeEmails; + savedCorporateEmails = authCorporateEmails; await invalidate(Dependencies.PROJECT); addNotification({ @@ -148,6 +164,21 @@ + + + + + Only allow corporate email addresses. Blocks free providers and + disposable emails. For example: user@company.com + + + + From 27ac976cd1568b66d9e891cd44236a029736088b Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Thu, 11 Jun 2026 20:16:38 +0530 Subject: [PATCH 2/6] fix: rename label to Deny non-corporate emails --- .../auth/security/updateSignupEmailSecurity.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte index 4705300b82..b872357fba 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte @@ -168,7 +168,7 @@ + label="Deny non-corporate emails"> Date: Thu, 11 Jun 2026 20:18:03 +0530 Subject: [PATCH 3/6] fix: use Require corporate emails label for better UX --- .../auth/security/updateSignupEmailSecurity.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte index b872357fba..4705300b82 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte @@ -168,7 +168,7 @@ + label="Require corporate emails"> Date: Thu, 11 Jun 2026 20:18:52 +0530 Subject: [PATCH 4/6] fix: use Deny non-corporate emails label for consistency --- .../auth/security/updateSignupEmailSecurity.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte index 4705300b82..b872357fba 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte @@ -168,7 +168,7 @@ + label="Deny non-corporate emails"> Date: Thu, 11 Jun 2026 20:28:50 +0530 Subject: [PATCH 5/6] fix: use Require corporate emails label and show blocked email example --- .../auth/security/updateSignupEmailSecurity.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte index b872357fba..9550f382f4 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte @@ -168,13 +168,13 @@ + label="Require corporate emails"> Only allow corporate email addresses. Blocks free providers and disposable emails. For example: user@company.com + >user@gmail.com From 785b5899057ac8e64adad2f6db8c2af21b269b20 Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Thu, 11 Jun 2026 20:29:25 +0530 Subject: [PATCH 6/6] fix: use Deny non-corporate emails label --- .../auth/security/updateSignupEmailSecurity.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte index 9550f382f4..b30bcc5443 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSignupEmailSecurity.svelte @@ -168,7 +168,7 @@ + label="Deny non-corporate emails">