From 88c49abe7441b1f96b1e4078953937ac05f6dae7 Mon Sep 17 00:00:00 2001 From: sd Date: Thu, 2 May 2024 13:20:32 +0200 Subject: [PATCH 01/10] create a new `` component --- frontend/src/lib/Modal.svelte | 90 +++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 frontend/src/lib/Modal.svelte diff --git a/frontend/src/lib/Modal.svelte b/frontend/src/lib/Modal.svelte new file mode 100644 index 00000000..c6738d17 --- /dev/null +++ b/frontend/src/lib/Modal.svelte @@ -0,0 +1,90 @@ + + + + + (showModal = false)} + on:click|self={() => dialog.close()} +> + +
+
dialog.close()} + > + +
+
+ +
+
+
+ + From 9aa0ef4f9ddbdd4cfc22437644e97e1d1c46aac1 Mon Sep 17 00:00:00 2001 From: sd Date: Thu, 2 May 2024 13:21:09 +0200 Subject: [PATCH 02/10] UI: prepare the "link provider" feature --- .../src/components/account/AccInfo.svelte | 135 +++++++++++++++++- .../src/routes/oidc/authorize/+page.svelte | 7 +- rauthy-models/src/i18n/account.rs | 14 +- 3 files changed, 143 insertions(+), 13 deletions(-) diff --git a/frontend/src/components/account/AccInfo.svelte b/frontend/src/components/account/AccInfo.svelte index c8d09f80..6bc849cc 100644 --- a/frontend/src/components/account/AccInfo.svelte +++ b/frontend/src/components/account/AccInfo.svelte @@ -2,10 +2,11 @@ import CheckIcon from "$lib/CheckIcon.svelte"; import {buildWebIdUri, formatDateFromTs} from "../../utils/helpers.js"; import {onMount} from "svelte"; - import {getAuthProvidersTemplate} from "../../utils/helpers.js"; import Button from "$lib/Button.svelte"; - import Tooltip from "$lib/Tooltip.svelte"; import {deleteUserProviderLink} from "../../utils/dataFetching.js"; + import Modal from "$lib/Modal.svelte"; + import getPkce from "oauth-pkce"; + import {PKCE_VERIFIER_UPSTREAM} from "../../utils/constants.js"; export let t; export let user = {}; @@ -15,6 +16,9 @@ export let viewModePhone = false; let unlinkErr = false; + let showModal = true; + // let showModal = false; + let providersAvailable = []; $: isFederated = user.account_type.startsWith('federated'); $: accType = isFederated ? `${user.account_type}: ${authProvider?.name || ''}` : user.account_type; @@ -22,6 +26,27 @@ $: classRow = viewModePhone ? 'rowPhone' : 'row'; $: classLabel = viewModePhone ? 'labelPhone' : 'label'; + onMount(() => { + // value for dev testing only + const providersTpl = [{ + "id": "7F6N7fb3el3P5XimjJSaeD2o", + "name": "Rauthy IAM" + }, {"id": "7F6N7fb3el3P5XimjJSaeD2O", "name": "Rauthy IAM 2"}]; + // const providersTpl = document?.getElementsByTagName("template").namedItem("auth_providers")?.innerHTML; + console.log(providersTpl); + providersAvailable = providersTpl; + }) + + function linkProvider(id) { + console.error('TODO linkProvider'); + // getPkce(64, (error, {challenge, verifier}) => { + // if (!error) { + // localStorage.setItem(PKCE_VERIFIER_UPSTREAM, verifier); + // providerLoginPkce(id, challenge); + // } + // }); + } + async function unlinkProvider() { let res = await deleteUserProviderLink(); let body = await res.json(); @@ -70,8 +95,39 @@ {/if} - {:else} - + {:else if providersAvailable.length > 0} + + +

+ {t.providerLinkDesc} +

+ +
+ {#each providersAvailable as provider (provider.id)} + + {/each} +
+
{/if} @@ -133,7 +189,6 @@ {/if} -