diff --git a/src/frontend/src/lib/components/modals/auth/AuthConfigModal.svelte b/src/frontend/src/lib/components/modals/auth/AuthConfigModal.svelte index 1fb76564f1..63c4cbafac 100644 --- a/src/frontend/src/lib/components/modals/auth/AuthConfigModal.svelte +++ b/src/frontend/src/lib/components/modals/auth/AuthConfigModal.svelte @@ -3,8 +3,8 @@ import type { PrincipalText } from '@dfinity/zod-schemas'; import type { Principal } from '@icp-sdk/core/principal'; import AuthConfigFormCore from '$lib/components/satellites/auth/AuthConfigFormCore.svelte'; - import AuthConfigFormGoogle from '$lib/components/satellites/auth/AuthConfigFormGoogle.svelte'; import AuthConfigFormII from '$lib/components/satellites/auth/AuthConfigFormII.svelte'; + import AuthConfigFormOpenId from '$lib/components/satellites/auth/AuthConfigFormOpenId.svelte'; import Modal from '$lib/components/ui/Modal.svelte'; import SpinnerModal from '$lib/components/ui/SpinnerModal.svelte'; import { authIdentity } from '$lib/derived/auth.derived'; @@ -34,10 +34,12 @@ let rule = $derived('core' in detail ? detail.core.rule : undefined); - let edit = $derived<'core' | 'internet_identity' | 'google'>( - 'core' in detail ? 'core' : 'internet_identity' in detail ? 'internet_identity' : 'google' + let edit = $derived<'core' | 'internet_identity' | 'openid'>( + 'core' in detail ? 'core' : 'internet_identity' in detail ? 'internet_identity' : 'openid' ); + let openidProvider = $derived('openid' in detail ? detail.openid.provider : null); + let config = $derived(detail.config); // Core rules @@ -48,10 +50,10 @@ let selectedDerivationOrigin = $state(undefined); let externalAlternativeOrigins = $state(''); - // Google - let googleClientId = $state(undefined); - let googleMaxTimeToLive = $state(undefined); - let googleAllowedTargets = $state(undefined); + // OpenId (Google and GitHub) + let openidClientId = $state(undefined); + let openidMaxTimeToLive = $state(undefined); + let openidAllowedTargets = $state(undefined); let step: 'init' | 'in_progress' | 'ready' | 'error' = $state('init'); @@ -76,12 +78,13 @@ }); } - if (edit === 'google') { + if (edit === 'openid') { return updateAuthConfigGoogle({ ...commonPayload, - clientId: googleClientId, - maxTimeToLive: googleMaxTimeToLive, - allowedTargets: $state.snapshot(googleAllowedTargets) + provider: openidProvider, + clientId: openidClientId, + maxTimeToLive: openidMaxTimeToLive, + allowedTargets: $state.snapshot(openidAllowedTargets) }); } @@ -95,9 +98,10 @@ const { success } = await update(); - if (isSkylab() && edit === 'google') { + if (isSkylab() && nonNullish(openidProvider)) { await emulatorToggleOpenIdMonitoring({ - enable: nonNullish(googleClientId) + enable: nonNullish(openidClientId), + provider: openidProvider }); } @@ -124,14 +128,15 @@

{$i18n.core.updating_configuration}

- {:else if edit === 'google'} - {:else if edit === 'internet_identity'} 'Google' in key)); - let providerData = $state(google?.[1]); + let openidProvider = $state(findProvider(openid)); + let providerData = $state(openidProvider?.[1]); let delegation = $state(fromNullable(providerData?.delegation ?? [])); - let googleEnabled = $state(nonNullish(google)); + let openidEnabled = $state(nonNullish(openidProvider)); // Client ID let currentClientId = $state(providerData?.client_id); @@ -89,17 +96,17 @@ let warnClientId = $derived(isEmptyString(clientId) && notEmptyString(currentClientId)); -

Google

+

{provider}

{i18nFormat( - googleEnabled + openidEnabled ? $i18n.authentication.edit_provider : $i18n.authentication.edit_to_enable_provider, [ { placeholder: '{0}', - value: 'Google' + value: i18nCapitalize(provider) } ] )} @@ -153,7 +160,7 @@ - + {#if warnClientId}

@@ -166,3 +173,9 @@ {$i18n.core.submit} + + diff --git a/src/frontend/src/lib/components/satellites/auth/AuthConfigFormGoogleOptions.svelte b/src/frontend/src/lib/components/satellites/auth/AuthConfigFormOpenIdOptions.svelte similarity index 100% rename from src/frontend/src/lib/components/satellites/auth/AuthConfigFormGoogleOptions.svelte rename to src/frontend/src/lib/components/satellites/auth/AuthConfigFormOpenIdOptions.svelte diff --git a/src/frontend/src/lib/components/satellites/auth/AuthConfigGoogle.svelte b/src/frontend/src/lib/components/satellites/auth/AuthConfigOpenId.svelte similarity index 88% rename from src/frontend/src/lib/components/satellites/auth/AuthConfigGoogle.svelte rename to src/frontend/src/lib/components/satellites/auth/AuthConfigOpenId.svelte index d3db2d4268..88c5c4164b 100644 --- a/src/frontend/src/lib/components/satellites/auth/AuthConfigGoogle.svelte +++ b/src/frontend/src/lib/components/satellites/auth/AuthConfigOpenId.svelte @@ -14,26 +14,31 @@ TWO_WEEKS_NS } from '$lib/constants/duration.constants'; import { i18n } from '$lib/stores/app/i18n.store'; + import type { OpenIdAuthProvider } from '$lib/types/auth'; import { AUTH_CONFIG_CONTEXT_KEY, type AuthConfigContext } from '$lib/types/auth.context'; import type { JunoModalEditAuthConfigDetailType } from '$lib/types/modal'; import type { Satellite } from '$lib/types/satellite'; + import { findProviderGitHub, findProviderGoogle } from '$lib/utils/auth.openid.utils'; import { secondsToDuration } from '$lib/utils/date.utils'; import { i18nFormat } from '$lib/utils/i18n.utils'; import { satelliteName } from '$lib/utils/satellite.utils'; interface Props { satellite: Satellite; + provider: OpenIdAuthProvider; openModal: (params: JunoModalEditAuthConfigDetailType) => Promise; } - let { satellite, openModal }: Props = $props(); + let { provider, satellite, openModal }: Props = $props(); const { config, supportConfig } = getContext(AUTH_CONFIG_CONTEXT_KEY); + let findProvider = $derived(provider === 'github' ? findProviderGitHub : findProviderGoogle); + let openid = $derived(fromNullable($config?.openid ?? [])); - let google = $derived(openid?.providers.find(([key]) => 'Google' in key)); + let openidProvider = $derived(findProvider(openid)); - let providerData = $derived(google?.[1]); + let providerData = $derived(openidProvider?.[1]); let clientId = $derived(providerData?.client_id); @@ -55,12 +60,12 @@ const openEditModal = async () => await openModal({ - google: null + openid: { provider } });
- Google + {provider}
@@ -148,6 +153,10 @@ @use '../../../styles/mixins/text'; @use '../../../styles/mixins/media'; + .title { + text-transform: capitalize; + } + p { &:not(.client-id) { @include text.truncate; diff --git a/src/frontend/src/lib/components/satellites/auth/AuthSettings.svelte b/src/frontend/src/lib/components/satellites/auth/AuthSettings.svelte index 0b72fd8298..60c77d65d5 100644 --- a/src/frontend/src/lib/components/satellites/auth/AuthSettings.svelte +++ b/src/frontend/src/lib/components/satellites/auth/AuthSettings.svelte @@ -1,8 +1,8 @@