From f802afb98e0d87800de6ebd3ffdf055e17776ee6 Mon Sep 17 00:00:00 2001
From: Torsten Dittmann
Date: Wed, 5 Oct 2022 17:40:55 +0200
Subject: [PATCH] fix: re-usable scopes and secret
---
src/lib/components/index.ts | 1 +
src/lib/components/secret.svelte | 28 ++++++
.../overview/keys/+page.svelte | 2 +-
.../keys/[key]/+page@project-[project].svelte | 96 +++----------------
.../overview/keys/create.svelte | 27 ++----
.../overview/keys/scopes.svelte | 72 ++++++++++++++
6 files changed, 124 insertions(+), 102 deletions(-)
create mode 100644 src/lib/components/secret.svelte
create mode 100644 src/routes/console/project-[project]/overview/keys/scopes.svelte
diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts
index bd3ebd58e..96e13637b 100644
--- a/src/lib/components/index.ts
+++ b/src/lib/components/index.ts
@@ -27,3 +27,4 @@ export { default as Search } from './search.svelte';
export { default as GridItem1 } from './gridItem1.svelte';
export { default as Steps } from './steps.svelte';
export { default as Step } from './step.svelte';
+export { default as Secret } from './secret.svelte';
diff --git a/src/lib/components/secret.svelte b/src/lib/components/secret.svelte
new file mode 100644
index 000000000..458005a93
--- /dev/null
+++ b/src/lib/components/secret.svelte
@@ -0,0 +1,28 @@
+
+
+
+ {#if show}
+
{value}
+ {:else}
+
••••••
+ {/if}
+
+
+
+
+
+
+
diff --git a/src/routes/console/project-[project]/overview/keys/+page.svelte b/src/routes/console/project-[project]/overview/keys/+page.svelte
index ebe4a4379..5f611048c 100644
--- a/src/routes/console/project-[project]/overview/keys/+page.svelte
+++ b/src/routes/console/project-[project]/overview/keys/+page.svelte
@@ -39,7 +39,7 @@
{key.name}
- {toLocaleDateTime(key.$createdAt)}
+ {key.accessedAt ? toLocaleDateTime(key.accessedAt) : 'never'}
{toLocaleDateTime(key.$updatedAt)}
diff --git a/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte b/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte
index a168fd26f..e84332823 100644
--- a/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte
+++ b/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte
@@ -2,16 +2,8 @@
import { afterNavigate } from '$app/navigation';
import { base } from '$app/paths';
import { page } from '$app/stores';
- import { CardGrid, Collapsible, CollapsibleItem } from '$lib/components';
- import { scopes } from '$lib/constants';
- import {
- Button,
- Form,
- FormList,
- InputChoice,
- InputPassword,
- InputText
- } from '$lib/elements/forms';
+ import { CardGrid, Secret } from '$lib/components';
+ import { Button, Form, FormList, InputText } from '$lib/elements/forms';
import InputDateTime from '$lib/elements/forms/inputDateTime.svelte';
import { difference } from '$lib/helpers/array';
import { toLocaleDateTime } from '$lib/helpers/date';
@@ -21,39 +13,30 @@
import { sdkForConsole } from '$lib/stores/sdk';
import { onMount } from 'svelte';
import { project } from '../../../store';
+ import Scopes from '../scopes.svelte';
import Delete from './delete.svelte';
import { key } from './store';
const projectId = $page.params.project;
const keyId = $page.params.key;
- const activeScopes = scopes.reduce((prev, next) => {
- prev[next.scope] = false;
-
- return prev;
- }, {});
let loaded = false;
let showDelete = false;
let name: string = null;
let secret: string = null;
let expire: string = null;
+ let scopes: string[] = null;
onMount(handle);
afterNavigate(handle);
async function handle(event = null) {
- const promise = key.load(projectId, keyId);
- if ($key?.$id !== keyId) {
- await promise;
- }
+ await key.load(projectId, keyId);
name ??= $key.name;
secret ??= $key.secret;
expire ??= $key.expire;
- unselectAll();
- $key.scopes.forEach((scope) => {
- activeScopes[scope] = true;
- });
+ scopes ??= $key.scopes;
updateLayout({
navigate: event,
@@ -120,13 +103,8 @@
async function updateScopes() {
try {
- await sdkForConsole.projects.updateKey(
- $project.$id,
- $key.$id,
- $key.name,
- selectedScoped
- );
- $key.scopes = selectedScoped;
+ await sdkForConsole.projects.updateKey($project.$id, $key.$id, $key.name, scopes);
+ $key.scopes = scopes;
addNotification({
type: 'success',
message: 'API Key scopes has been updated'
@@ -138,22 +116,6 @@
});
}
}
-
- function selectAll() {
- for (const scope in activeScopes) {
- activeScopes[scope] = true;
- }
- }
-
- function unselectAll() {
- for (const scope in activeScopes) {
- activeScopes[scope] = false;
- }
- }
-
- $: selectedScoped = scopes
- .filter((scope) => activeScopes[scope.scope])
- .map(({ scope }) => scope);
@@ -162,13 +124,14 @@
{#if loaded}
+ {@const accessedAt = $key.accessedAt ? toLocaleDateTime($key.accessedAt) : 'never'}
{$key.name}
- Last accessed: {toLocaleDateTime($key.accessedAt)}
+ Last accessed: {accessedAt}
Scopes granted: {$key.scopes.length}
@@ -178,18 +141,9 @@
API Key Secret
-
+
-
-
-
-
-
-
-
-
-
- {#each ['Authentication', 'Database', 'Functions', 'Storage', 'Other'] as category}
-
- {category}
-
- {#each scopes.filter((s) => s.category === category) as scope}
-
- {scope.description}
-
- {/each}
-
-
- {/each}
-
+
@@ -278,7 +212,7 @@
{$key.name}
-
Last accessed: {toLocaleDateTime($key.accessedAt)}
+
Last accessed: {accessedAt}
diff --git a/src/routes/console/project-[project]/overview/keys/create.svelte b/src/routes/console/project-[project]/overview/keys/create.svelte
index 80765d20c..043cae7cb 100644
--- a/src/routes/console/project-[project]/overview/keys/create.svelte
+++ b/src/routes/console/project-[project]/overview/keys/create.svelte
@@ -1,32 +1,21 @@