From 2a1d08c3cc958e44babb2668ef11a1d34c40e284 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 3 Nov 2022 13:42:53 +0100 Subject: [PATCH 1/5] feat: api keys --- src/lib/components/collapsibleItem.svelte | 12 ++++- src/lib/constants.ts | 6 ++- src/lib/stores/oauth-providers.ts | 1 - .../functions/createFunction.svelte | 2 - .../project-[project]/overview/+layout.svelte | 1 - .../overview/keys/+page.svelte | 23 +++++---- .../overview/keys/create.svelte | 42 ---------------- .../overview/keys/scopes.svelte | 49 +++++++++++++++++-- .../overview/keys/wizard.svelte | 46 +++++++++++++++++ .../overview/keys/wizard/step1.svelte | 19 +++++++ .../overview/keys/wizard/step2.svelte | 17 +++++++ .../overview/keys/wizard/store.ts | 25 ++++++++++ 12 files changed, 183 insertions(+), 60 deletions(-) delete mode 100644 src/routes/console/project-[project]/overview/keys/create.svelte create mode 100644 src/routes/console/project-[project]/overview/keys/wizard.svelte create mode 100644 src/routes/console/project-[project]/overview/keys/wizard/step1.svelte create mode 100644 src/routes/console/project-[project]/overview/keys/wizard/step2.svelte create mode 100644 src/routes/console/project-[project]/overview/keys/wizard/store.ts diff --git a/src/lib/components/collapsibleItem.svelte b/src/lib/components/collapsibleItem.svelte index 5caa6caf34..bbdd9e22e9 100644 --- a/src/lib/components/collapsibleItem.svelte +++ b/src/lib/components/collapsibleItem.svelte @@ -1,3 +1,7 @@ + +
  • @@ -7,8 +11,14 @@ -
    +
  • + + diff --git a/src/lib/constants.ts b/src/lib/constants.ts index db195e23c5..f2f483edc4 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -32,7 +32,11 @@ export enum Dependencies { WEBHOOKS = 'webhooks' } -export const scopes = [ +export const scopes: { + scope: string; + description: string; + category: string; +}[] = [ { scope: 'users.read', description: "Access to read your project's users", diff --git a/src/lib/stores/oauth-providers.ts b/src/lib/stores/oauth-providers.ts index e897255ed8..64b254b00d 100644 --- a/src/lib/stores/oauth-providers.ts +++ b/src/lib/stores/oauth-providers.ts @@ -26,7 +26,6 @@ const setProviders = (project: Models.Project): Provider[] => { switch (n.name.toLowerCase()) { case 'amazon': - console.log(n); docs = 'https://developer.amazon.com/apps-and-games/services-and-apis'; break; case 'apple': diff --git a/src/routes/console/project-[project]/functions/createFunction.svelte b/src/routes/console/project-[project]/functions/createFunction.svelte index e2402afb3e..10d04101be 100644 --- a/src/routes/console/project-[project]/functions/createFunction.svelte +++ b/src/routes/console/project-[project]/functions/createFunction.svelte @@ -15,11 +15,9 @@ import { Dependencies } from '$lib/constants'; async function onFinish() { - console.log(2); await invalidate(Dependencies.FUNCTIONS); } async function create() { - console.log(1); try { const response = await sdkForProject.functions.create( $createFunction.id ?? 'unique()', diff --git a/src/routes/console/project-[project]/overview/+layout.svelte b/src/routes/console/project-[project]/overview/+layout.svelte index c76947b11a..92681887aa 100644 --- a/src/routes/console/project-[project]/overview/+layout.svelte +++ b/src/routes/console/project-[project]/overview/+layout.svelte @@ -12,7 +12,6 @@ $: projectId = $page.params.project; $: path = `/console/project-${projectId}/overview`; - $: console.log($stats.get(projectId)); let period: UsagePeriods = '30d'; let showPeriodBandwidth = false; let showPeriodRequests = false; diff --git a/src/routes/console/project-[project]/overview/keys/+page.svelte b/src/routes/console/project-[project]/overview/keys/+page.svelte index c75cc7ec90..cba2e3ed94 100644 --- a/src/routes/console/project-[project]/overview/keys/+page.svelte +++ b/src/routes/console/project-[project]/overview/keys/+page.svelte @@ -10,16 +10,21 @@ TableRowLink } from '$lib/elements/table'; import { toLocaleDateTime } from '$lib/helpers/date'; + import { wizard } from '$lib/stores/wizard'; import type { PageData } from './$types'; - import Create from './create.svelte'; + import Wizard from './wizard.svelte'; + export let data: PageData; - let show = false; + + function create() { + wizard.start(Wizard); + }
    API Keys - @@ -32,7 +37,7 @@ Name last accessed expiration date - clients + scopes {#each data.keys.keys as key} @@ -44,15 +49,17 @@ {key.accessedAt ? toLocaleDateTime(key.accessedAt) : 'never'} - {toLocaleDateTime(key.$updatedAt)} + {key.expire ? toLocaleDateTime(key.expire) : 'never'} + + + {key.scopes.length} Scopes - {/each} {:else} - (show = true)}> +

    Create your first API Key to get started

    Need a hand? Check out our documentation.

    @@ -63,5 +70,3 @@
    {/if} - - diff --git a/src/routes/console/project-[project]/overview/keys/create.svelte b/src/routes/console/project-[project]/overview/keys/create.svelte deleted file mode 100644 index dea215fe29..0000000000 --- a/src/routes/console/project-[project]/overview/keys/create.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - - Create API Key - - - - - - - - - diff --git a/src/routes/console/project-[project]/overview/keys/scopes.svelte b/src/routes/console/project-[project]/overview/keys/scopes.svelte index d60f147308..da649acfb7 100644 --- a/src/routes/console/project-[project]/overview/keys/scopes.svelte +++ b/src/routes/console/project-[project]/overview/keys/scopes.svelte @@ -7,6 +7,14 @@ export let scopes: string[]; + enum Category { + Authentication = 'Authentication', + Database = 'Database', + Functions = 'Functions', + Storage = 'Storage', + Other = 'Other' + } + let mounted = false; onMount(() => { @@ -28,6 +36,29 @@ } } + function categoryState(category: string, s: string[]): boolean | null { + const scopesByCategory = allScopes.filter((n) => n.category === category); + const filtered = scopesByCategory.filter((n) => s.includes(n.scope)); + if (filtered.length === 0) { + return false; + } else if (filtered.length === scopesByCategory.length) { + return true; + } else { + return null; + } + } + + function onCategoryChange( + event: Event & { currentTarget: EventTarget & HTMLInputElement }, + category: Category + ) { + allScopes.forEach((s) => { + if (s.category === category) { + activeScopes[s.scope] = event.currentTarget.checked; + } + }); + } + const activeScopes = allScopes.reduce((prev, next) => { prev[next.scope] = false; @@ -54,9 +85,21 @@
    - {#each ['Authentication', 'Database', 'Functions', 'Storage', 'Other'] as category} - - {category} + {#each [Category.Authentication, Category.Database, Category.Functions, Category.Storage, Category.Other] as category} + + + {@const checked = categoryState(category, scopes)} + onCategoryChange(e, category)} /> + {category} + + + ({allScopes.filter((n) => n.category === category && scopes.includes(n.scope)) + .length} Scopes) + {#each allScopes.filter((s) => s.category === category) as scope} + import { Wizard } from '$lib/layout'; + import { beforeNavigate, goto } from '$app/navigation'; + import { wizard } from '$lib/stores/wizard'; + import type { WizardStepsType } from '$lib/layout/wizard.svelte'; + import Step1 from './wizard/step1.svelte'; + import Step2 from './wizard/step2.svelte'; + import { key } from './wizard/store'; + import { sdkForConsole } from '$lib/stores/sdk'; + import { page } from '$app/stores'; + import { addNotification } from '$lib/stores/notifications'; + + async function onFinish() { + try { + const { $id } = await sdkForConsole.projects.createKey( + $page.params.project, + $key.name, + $key.scopes, + $key.expire ?? undefined + ); + key.reset(); + goto(`/console/project-${$page.params.project}/overview/keys/${$id}`); + } catch (error) { + addNotification({ + type: 'error', + message: error.message + }); + } + } + + beforeNavigate(() => { + wizard.hide(); + }); + + const stepsComponents: WizardStepsType = new Map(); + stepsComponents.set(1, { + label: 'Details', + component: Step1 + }); + stepsComponents.set(2, { + label: 'Scopes', + component: Step2 + }); + + + diff --git a/src/routes/console/project-[project]/overview/keys/wizard/step1.svelte b/src/routes/console/project-[project]/overview/keys/wizard/step1.svelte new file mode 100644 index 0000000000..3637cd145e --- /dev/null +++ b/src/routes/console/project-[project]/overview/keys/wizard/step1.svelte @@ -0,0 +1,19 @@ + + + + Create an API Key + Let's create an API Key. + + + + + diff --git a/src/routes/console/project-[project]/overview/keys/wizard/step2.svelte b/src/routes/console/project-[project]/overview/keys/wizard/step2.svelte new file mode 100644 index 0000000000..56638e8a09 --- /dev/null +++ b/src/routes/console/project-[project]/overview/keys/wizard/step2.svelte @@ -0,0 +1,17 @@ + + + + Add Scopes + + Choose which permission scopes to grant your application. It is best practice to allow only + the permissions you need to meet your project goals. + + + + + diff --git a/src/routes/console/project-[project]/overview/keys/wizard/store.ts b/src/routes/console/project-[project]/overview/keys/wizard/store.ts new file mode 100644 index 0000000000..148e581939 --- /dev/null +++ b/src/routes/console/project-[project]/overview/keys/wizard/store.ts @@ -0,0 +1,25 @@ +import { writable } from 'svelte/store'; +import type { Models } from '@aw-labs/appwrite-console'; + +function createKeyStore() { + const { subscribe, update, set } = writable>({ + name: null, + expire: null, + scopes: [] + }); + + return { + subscribe, + update, + set, + reset() { + set({ + name: null, + expire: null, + scopes: [] + }); + } + }; +} + +export const key = createKeyStore(); From 1b3220b295c9c0536a2e5032912640448a1722b4 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 3 Nov 2022 15:25:02 +0100 Subject: [PATCH 2/5] feat: new ui library --- package-lock.json | 511 +----------------- package.json | 4 +- src/lib/components/collapsibleItem.svelte | 12 +- .../overview/keys/scopes.svelte | 28 +- 4 files changed, 37 insertions(+), 518 deletions(-) diff --git a/package-lock.json b/package-lock.json index 74d4a1f5e0..1eb26ab2d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "0.0.1", "dependencies": { "@aw-labs/appwrite-console": "^10.0.0", - "@aw-labs/icons": "0.0.0-66", - "@aw-labs/ui": "0.0.0-66", + "@aw-labs/icons": "0.0.0-68", + "@aw-labs/ui": "0.0.0-68", "@popperjs/core": "^2.11.6", "echarts": "^5.4.0", "prismjs": "^1.29.0", @@ -80,14 +80,14 @@ } }, "node_modules/@aw-labs/icons": { - "version": "0.0.0-66", - "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-66.tgz", - "integrity": "sha512-3r6pxixYZ6Bn9QTUbFk8XYwds+CHz1baRkOVsQ5HoFz6XgvzTWn3/+pvZZ56Ht2Ek//wr4wwI30pdCXaX4QIsA==" + "version": "0.0.0-68", + "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-68.tgz", + "integrity": "sha512-sLaaDCjVUysdfatBtis/p8ggphEi1GlhJHnYAzERBJ9iX6lyvT61UXDADOk27GxL8h9fJJ+J1Q8BEF0QfTHooQ==" }, "node_modules/@aw-labs/ui": { - "version": "0.0.0-66", - "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-66.tgz", - "integrity": "sha512-5qFISwKzOyZq7Ix5FG/BhVKEcIMXd2/Y8Ioba+ejTQ8B9hzj6FlwxUw7hLT49ZDhU+kxpjJQV51hRpbHGvmEag==", + "version": "0.0.0-68", + "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-68.tgz", + "integrity": "sha512-1MdyKxo/8tETxp5CKCI56IhadAUxGBTT6bGxr/IfMORWQkDdGLF+y2xwjLq8md+tEBxQv7akkXu1jCzpl6Wf/Q==", "dependencies": { "@aw-labs/icons": "*", "normalize.css": "^8.0.1", @@ -721,38 +721,6 @@ "dev": true, "peer": true }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.10.tgz", - "integrity": "sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz", - "integrity": "sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -2899,54 +2867,6 @@ "esbuild-windows-arm64": "0.15.10" } }, - "node_modules/esbuild-android-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz", - "integrity": "sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz", - "integrity": "sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz", - "integrity": "sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/esbuild-darwin-arm64": { "version": "0.15.10", "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz", @@ -2963,262 +2883,6 @@ "node": ">=12" } }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz", - "integrity": "sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz", - "integrity": "sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz", - "integrity": "sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz", - "integrity": "sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz", - "integrity": "sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz", - "integrity": "sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz", - "integrity": "sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz", - "integrity": "sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz", - "integrity": "sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz", - "integrity": "sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz", - "integrity": "sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz", - "integrity": "sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz", - "integrity": "sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz", - "integrity": "sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz", - "integrity": "sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz", - "integrity": "sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -7791,14 +7455,14 @@ } }, "@aw-labs/icons": { - "version": "0.0.0-66", - "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-66.tgz", - "integrity": "sha512-3r6pxixYZ6Bn9QTUbFk8XYwds+CHz1baRkOVsQ5HoFz6XgvzTWn3/+pvZZ56Ht2Ek//wr4wwI30pdCXaX4QIsA==" + "version": "0.0.0-68", + "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-68.tgz", + "integrity": "sha512-sLaaDCjVUysdfatBtis/p8ggphEi1GlhJHnYAzERBJ9iX6lyvT61UXDADOk27GxL8h9fJJ+J1Q8BEF0QfTHooQ==" }, "@aw-labs/ui": { - "version": "0.0.0-66", - "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-66.tgz", - "integrity": "sha512-5qFISwKzOyZq7Ix5FG/BhVKEcIMXd2/Y8Ioba+ejTQ8B9hzj6FlwxUw7hLT49ZDhU+kxpjJQV51hRpbHGvmEag==", + "version": "0.0.0-68", + "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-68.tgz", + "integrity": "sha512-1MdyKxo/8tETxp5CKCI56IhadAUxGBTT6bGxr/IfMORWQkDdGLF+y2xwjLq8md+tEBxQv7akkXu1jCzpl6Wf/Q==", "requires": { "@aw-labs/icons": "*", "normalize.css": "^8.0.1", @@ -8291,20 +7955,6 @@ "dev": true, "peer": true }, - "@esbuild/android-arm": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.10.tgz", - "integrity": "sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.10.tgz", - "integrity": "sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==", - "dev": true, - "optional": true - }, "@eslint/eslintrc": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", @@ -9991,27 +9641,6 @@ "esbuild-windows-arm64": "0.15.10" } }, - "esbuild-android-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.10.tgz", - "integrity": "sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.10.tgz", - "integrity": "sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.10.tgz", - "integrity": "sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==", - "dev": true, - "optional": true - }, "esbuild-darwin-arm64": { "version": "0.15.10", "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.10.tgz", @@ -10019,118 +9648,6 @@ "dev": true, "optional": true }, - "esbuild-freebsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.10.tgz", - "integrity": "sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.10.tgz", - "integrity": "sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.10.tgz", - "integrity": "sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.10.tgz", - "integrity": "sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.10.tgz", - "integrity": "sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.10.tgz", - "integrity": "sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.10.tgz", - "integrity": "sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.10.tgz", - "integrity": "sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.10.tgz", - "integrity": "sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.10.tgz", - "integrity": "sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.10.tgz", - "integrity": "sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.10.tgz", - "integrity": "sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.10.tgz", - "integrity": "sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.10.tgz", - "integrity": "sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.10.tgz", - "integrity": "sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.10.tgz", - "integrity": "sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==", - "dev": true, - "optional": true - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", diff --git a/package.json b/package.json index 9a26175329..1c2a776357 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ }, "dependencies": { "@aw-labs/appwrite-console": "^10.0.0", - "@aw-labs/icons": "0.0.0-66", - "@aw-labs/ui": "0.0.0-66", + "@aw-labs/icons": "0.0.0-68", + "@aw-labs/ui": "0.0.0-68", "@popperjs/core": "^2.11.6", "echarts": "^5.4.0", "prismjs": "^1.29.0", diff --git a/src/lib/components/collapsibleItem.svelte b/src/lib/components/collapsibleItem.svelte index bbdd9e22e9..2415512b03 100644 --- a/src/lib/components/collapsibleItem.svelte +++ b/src/lib/components/collapsibleItem.svelte @@ -5,20 +5,18 @@
  • +
    -
    +
  • - - diff --git a/src/routes/console/project-[project]/overview/keys/scopes.svelte b/src/routes/console/project-[project]/overview/keys/scopes.svelte index da649acfb7..80f22abdda 100644 --- a/src/routes/console/project-[project]/overview/keys/scopes.svelte +++ b/src/routes/console/project-[project]/overview/keys/scopes.svelte @@ -86,30 +86,34 @@ {#each [Category.Authentication, Category.Database, Category.Functions, Category.Storage, Category.Other] as category} + {@const checked = categoryState(category, scopes)} - - {@const checked = categoryState(category, scopes)} + onCategoryChange(e, category)} /> + + {category} ({allScopes.filter((n) => n.category === category && scopes.includes(n.scope)) .length} Scopes) - - {#each allScopes.filter((s) => s.category === category) as scope} - - {scope.description} - - {/each} - +
    + + {#each allScopes.filter((s) => s.category === category) as scope} + + {scope.description} + + {/each} + +
    {/each}
    From 3f3ba74531dcbe8ec67c7996ff8c5743575cd705 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 3 Nov 2022 15:41:18 +0100 Subject: [PATCH 3/5] fix: api scopes --- .../overview/keys/[key]/+page@project-[project].svelte | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 1163b49028..5729116428 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 @@ -18,7 +18,7 @@ let name: string = null; let secret: string = null; let expire: string = null; - let scopes: string[] = []; + let scopes: string[] = null; onMount(() => { name ??= $key.name; @@ -135,15 +135,17 @@ practice to allow only the permissions you need to meet your project goals.

    - + {#if scopes !== null} + + {/if} From 6aa0fac8786db514975081983d0dd2962c41f54c Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 3 Nov 2022 15:43:30 +0100 Subject: [PATCH 4/5] fix: condition --- .../overview/keys/[key]/+page@project-[project].svelte | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 5729116428..ad2e0cf3f2 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 @@ -143,10 +143,12 @@ + disabled={scopes && + $key?.scopes && + !( + difference(scopes, $key.scopes).length !== 0 || + difference($key.scopes, scopes).length !== 0 + )}>Update From 2f6a6a1f805749667812cce03de7998d78213f8c Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 3 Nov 2022 15:51:49 +0100 Subject: [PATCH 5/5] fix: api key wizard --- .../console/project-[project]/overview/keys/wizard.svelte | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/routes/console/project-[project]/overview/keys/wizard.svelte b/src/routes/console/project-[project]/overview/keys/wizard.svelte index 5acc79141a..e1efc9ebb1 100644 --- a/src/routes/console/project-[project]/overview/keys/wizard.svelte +++ b/src/routes/console/project-[project]/overview/keys/wizard.svelte @@ -9,6 +9,7 @@ import { sdkForConsole } from '$lib/stores/sdk'; import { page } from '$app/stores'; import { addNotification } from '$lib/stores/notifications'; + import { onDestroy } from 'svelte'; async function onFinish() { try { @@ -18,7 +19,6 @@ $key.scopes, $key.expire ?? undefined ); - key.reset(); goto(`/console/project-${$page.params.project}/overview/keys/${$id}`); } catch (error) { addNotification({ @@ -28,6 +28,10 @@ } } + onDestroy(() => { + key.reset(); + }); + beforeNavigate(() => { wizard.hide(); }); @@ -43,4 +47,4 @@ }); - +