diff --git a/apps/browser-extension/src/entrypoints/background/PasskeyHandler.ts b/apps/browser-extension/src/entrypoints/background/PasskeyHandler.ts index 25d52abc6..3e7ee8833 100644 --- a/apps/browser-extension/src/entrypoints/background/PasskeyHandler.ts +++ b/apps/browser-extension/src/entrypoints/background/PasskeyHandler.ts @@ -7,7 +7,7 @@ import { handleGetEncryptionKey } from '@/entrypoints/background/VaultMessageHan import type { PasskeyWithItem } from '@/utils/db/mappers/PasskeyMapper'; import { EncryptionUtility } from '@/utils/EncryptionUtility'; -import { extractDomain, extractRootDomain } from '@/utils/itemMatcher/ItemMatcher'; +import { extractDomain } from '@/utils/itemMatcher/ItemMatcher'; import { LocalPreferencesService } from '@/utils/LocalPreferencesService'; import { PasskeyHelper } from '@/utils/passkey/PasskeyHelper'; import type { @@ -48,15 +48,15 @@ export async function handleGetWebAuthnSettings(data: any): Promise { export async function isWebAuthnInterceptionEnabled(): Promise { try { const response = await sendMessage('GET_WEBAUTHN_SETTINGS', { - hostname: window.location.hostname + url: window.location.href }, 'background') as unknown as WebAuthnSettingsResponse; return response.enabled ?? false; } catch { diff --git a/apps/browser-extension/src/entrypoints/popup/pages/passkeys/PasskeyAuthenticate.tsx b/apps/browser-extension/src/entrypoints/popup/pages/passkeys/PasskeyAuthenticate.tsx index c5178159b..91526aaa3 100644 --- a/apps/browser-extension/src/entrypoints/popup/pages/passkeys/PasskeyAuthenticate.tsx +++ b/apps/browser-extension/src/entrypoints/popup/pages/passkeys/PasskeyAuthenticate.tsx @@ -10,7 +10,7 @@ import { useDb } from '@/entrypoints/popup/context/DbContext'; import { useLoading } from '@/entrypoints/popup/context/LoadingContext'; import { useVaultLockRedirect } from '@/entrypoints/popup/hooks/useVaultLockRedirect'; -import { extractDomain, extractRootDomain } from '@/utils/itemMatcher/ItemMatcher'; +import { extractDomain } from '@/utils/itemMatcher/ItemMatcher'; import { LocalPreferencesService } from '@/utils/LocalPreferencesService'; import { PasskeyAuthenticator } from '@/utils/passkey/PasskeyAuthenticator'; import { PasskeyHelper } from '@/utils/passkey/PasskeyHelper'; @@ -313,13 +313,12 @@ const PasskeyAuthenticate: React.FC = () => { } if (choice === 'always') { - // Add to permanent disabled list - const hostname = new URL(request.origin).hostname; - const baseDomain = await extractRootDomain(await extractDomain(hostname)); + // Add to permanent disabled list (for this specific subdomain) + const domain = await extractDomain(request.origin); const disabledSites = await LocalPreferencesService.getPasskeyDisabledSites(); - if (!disabledSites.includes(baseDomain)) { - disabledSites.push(baseDomain); + if (!disabledSites.includes(domain)) { + disabledSites.push(domain); await LocalPreferencesService.setPasskeyDisabledSites(disabledSites); } } diff --git a/apps/browser-extension/src/entrypoints/popup/pages/passkeys/PasskeyCreate.tsx b/apps/browser-extension/src/entrypoints/popup/pages/passkeys/PasskeyCreate.tsx index f5839c781..fc5231f94 100644 --- a/apps/browser-extension/src/entrypoints/popup/pages/passkeys/PasskeyCreate.tsx +++ b/apps/browser-extension/src/entrypoints/popup/pages/passkeys/PasskeyCreate.tsx @@ -16,7 +16,7 @@ import { useVaultMutate } from '@/entrypoints/popup/hooks/useVaultMutate'; import type { Item, Passkey } from '@/utils/dist/core/models/vault'; import { FieldKey, ItemTypes, getFieldValue, createSystemField } from '@/utils/dist/core/models/vault'; -import { extractDomain, extractRootDomain, filterItems, AutofillMatchingMode } from '@/utils/itemMatcher/ItemMatcher'; +import { extractDomain, filterItems, AutofillMatchingMode } from '@/utils/itemMatcher/ItemMatcher'; import { LocalPreferencesService } from '@/utils/LocalPreferencesService'; import { PasskeyAuthenticator } from '@/utils/passkey/PasskeyAuthenticator'; import { PasskeyHelper } from '@/utils/passkey/PasskeyHelper'; @@ -490,13 +490,12 @@ const PasskeyCreate: React.FC = () => { } if (choice === 'always') { - // Add to permanent disabled list - const hostname = new URL(request.origin).hostname; - const baseDomain = await extractRootDomain(await extractDomain(hostname)); + // Add to permanent disabled list (for this specific subdomain) + const domain = await extractDomain(request.origin); const disabledSites = await LocalPreferencesService.getPasskeyDisabledSites(); - if (!disabledSites.includes(baseDomain)) { - disabledSites.push(baseDomain); + if (!disabledSites.includes(domain)) { + disabledSites.push(domain); await LocalPreferencesService.setPasskeyDisabledSites(disabledSites); } } diff --git a/apps/browser-extension/src/entrypoints/popup/pages/settings/PasskeySettings.tsx b/apps/browser-extension/src/entrypoints/popup/pages/settings/PasskeySettings.tsx index ebff301a6..cf2b5e068 100644 --- a/apps/browser-extension/src/entrypoints/popup/pages/settings/PasskeySettings.tsx +++ b/apps/browser-extension/src/entrypoints/popup/pages/settings/PasskeySettings.tsx @@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next'; import { useLoading } from '@/entrypoints/popup/context/LoadingContext'; -import { extractDomain, extractRootDomain } from '@/utils/itemMatcher/ItemMatcher'; +import { extractDomain } from '@/utils/itemMatcher/ItemMatcher'; import { LocalPreferencesService } from '@/utils/LocalPreferencesService'; import { browser } from "#imports"; @@ -45,19 +45,19 @@ const PasskeySettings: React.FC = () => { */ const loadSettings = useCallback(async () : Promise => { const tab = await getCurrentTab(); - const hostname = new URL(tab.url ?? '').hostname; - const baseDomain = await extractRootDomain(await extractDomain(hostname)); + const url = tab.url ?? ''; + const domain = await extractDomain(url); // Load settings using LocalPreferencesService const disabledUrls = await LocalPreferencesService.getPasskeyDisabledSites(); const isGloballyEnabled = await LocalPreferencesService.getPasskeyProviderEnabled(); - // Check if current base domain is disabled - const isEnabled = !disabledUrls.includes(baseDomain); + // Check if current domain is disabled + const isEnabled = !disabledUrls.includes(domain); setSettings({ disabledUrls, - currentUrl: baseDomain, + currentUrl: domain, isEnabled, isGloballyEnabled });