(
+ ApFlagId.SMTP_CONFIGURED,
+ );
+ return (emailAuthEnabled ?? true) && !!smtpConfigured;
+}
+
// Country variants are endless (yahoo.co.uk, hotmail.fr, …), so match the
// provider by prefix and keep the exact list for the one-off domains.
function isPersonalEmail(email: string): boolean {
From 24ab993fb4ee853db3fde316e6993db405af362a Mon Sep 17 00:00:00 2001
From: Ahmad Tash <144666528+AhmadTash@users.noreply.github.com>
Date: Mon, 17 Aug 2026 12:22:31 +0300
Subject: [PATCH 4/4] feat(auth): run the bot challenge invisibly (#14855)
---
.../auth-landing/turnstile-widget.tsx | 33 ++++++++++++-------
1 file changed, 21 insertions(+), 12 deletions(-)
diff --git a/packages/web/src/features/authentication/components/auth-landing/turnstile-widget.tsx b/packages/web/src/features/authentication/components/auth-landing/turnstile-widget.tsx
index 72658ebb2aaa..4a806354716e 100644
--- a/packages/web/src/features/authentication/components/auth-landing/turnstile-widget.tsx
+++ b/packages/web/src/features/authentication/components/auth-landing/turnstile-widget.tsx
@@ -71,9 +71,16 @@ export function TurnstileWidget({
}
widgetId = window.turnstile.render(container.current, {
sitekey: siteKey,
- callback: (token: string) => onToken(token),
+ appearance: 'interaction-only',
+ callback: (token: string) => {
+ setFailed(false);
+ onToken(token);
+ },
'expired-callback': () => onToken(undefined),
- 'error-callback': () => onToken(undefined),
+ 'error-callback': () => {
+ setFailed(true);
+ onToken(undefined);
+ },
});
widget.current = widgetId;
})
@@ -109,16 +116,18 @@ export function TurnstileWidget({
// Say so rather than leaving a dead submit button: the server requires a
// solved challenge whenever one is configured, so a blocked script means
// sign-in cannot proceed and the person needs to know why.
- if (failed) {
- return (
-
- {t(
- 'The verification step could not load. Disable your ad blocker for this page, then reload.',
- )}
-
- );
- }
- return ;
+ return (
+ <>
+
+ {failed && (
+
+ {t(
+ 'The verification step could not load. Disable your ad blocker for this page, then reload.',
+ )}
+
+ )}
+ >
+ );
}
type TurnstileWidgetProps = {