From e6065b6daa7452877805df11a769cedda1c802b0 Mon Sep 17 00:00:00 2001 From: DecDuck Date: Wed, 7 May 2025 09:54:02 +1000 Subject: [PATCH 1/5] fix: notification rendering --- server/components/UserHeader/NotificationWidgetPanel.vue | 2 +- server/drop-base | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/components/UserHeader/NotificationWidgetPanel.vue b/server/components/UserHeader/NotificationWidgetPanel.vue index 280f50fa..78b89828 100644 --- a/server/components/UserHeader/NotificationWidgetPanel.vue +++ b/server/components/UserHeader/NotificationWidgetPanel.vue @@ -22,7 +22,7 @@
- Date: Wed, 7 May 2025 10:43:27 +1000 Subject: [PATCH 2/5] fix: signout route --- server/pages/auth/signout.vue | 41 ------------------- .../server/routes/{ => auth}/signout.get.ts | 2 +- 2 files changed, 1 insertion(+), 42 deletions(-) delete mode 100644 server/pages/auth/signout.vue rename server/server/routes/{ => auth}/signout.get.ts (71%) diff --git a/server/pages/auth/signout.vue b/server/pages/auth/signout.vue deleted file mode 100644 index 62b84145..00000000 --- a/server/pages/auth/signout.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - diff --git a/server/server/routes/signout.get.ts b/server/server/routes/auth/signout.get.ts similarity index 71% rename from server/server/routes/signout.get.ts rename to server/server/routes/auth/signout.get.ts index 08e7673e..ebeb6f74 100644 --- a/server/server/routes/signout.get.ts +++ b/server/server/routes/auth/signout.get.ts @@ -1,4 +1,4 @@ -import sessionHandler from "../internal/session"; +import sessionHandler from "../../internal/session"; export default defineEventHandler(async (h3) => { await sessionHandler.signout(h3); From aa083bd615a7c2fb4c3d626387c1a1dd74177d8d Mon Sep 17 00:00:00 2001 From: DecDuck Date: Wed, 7 May 2025 12:16:09 +1000 Subject: [PATCH 3/5] fix: ignore error if we are unable to blacklist certificate --- server/server/internal/clients/ca-store.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/server/server/internal/clients/ca-store.ts b/server/server/internal/clients/ca-store.ts index 15fe49ec..fc7f1c65 100644 --- a/server/server/internal/clients/ca-store.ts +++ b/server/server/internal/clients/ca-store.ts @@ -70,14 +70,17 @@ export const dbCertificateStore = () => { }; }, async blacklistCertificate(name: string) { - await prisma.certificate.update({ - where: { - id: name, - }, - data: { - blacklisted: true, - }, - }); + try { + await prisma.certificate.update({ + where: { + id: name, + }, + data: { + blacklisted: true, + }, + }); + } finally { + } }, async checkBlacklistCertificate(name: string): Promise { const result = await prisma.certificate.findUnique({ @@ -88,7 +91,7 @@ export const dbCertificateStore = () => { blacklisted: true, }, }); - if (result === null) return false; + if (result === null) return true; return result.blacklisted; }, }; From 7d545efa1e76ac4026446fd9a5d31f4b6cdaad93 Mon Sep 17 00:00:00 2001 From: DecDuck Date: Wed, 7 May 2025 12:26:22 +1000 Subject: [PATCH 4/5] fix: signout, again --- server/components/UserHeader/UserWidget.vue | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/server/components/UserHeader/UserWidget.vue b/server/components/UserHeader/UserWidget.vue index c8028ab9..8bf8185f 100644 --- a/server/components/UserHeader/UserWidget.vue +++ b/server/components/UserHeader/UserWidget.vue @@ -58,6 +58,18 @@ {{ nav.label }} + + + + Signout + +
@@ -86,10 +98,5 @@ const navigation: NavigationItem[] = [ route: "/account", prefix: "", }, - { - label: "Sign out", - route: "/auth/signout", - prefix: "", - }, ].filter((e) => e !== undefined); From 0e7c0ff22a361db1676fdfad80e3e624a7f09f93 Mon Sep 17 00:00:00 2001 From: DecDuck Date: Wed, 7 May 2025 22:14:04 +1000 Subject: [PATCH 5/5] feat: oidc --- server/components/Auth/OpenID.vue | 10 + server/components/Auth/Simple.vue | 124 ++++++++ server/package.json | 1 + server/pages/auth/register.vue | 10 +- server/pages/auth/signin.vue | 133 +-------- server/prisma/auth.prisma | 1 + .../migration.sql | 2 + server/prisma/migrations/migration_lock.toml | 2 +- server/server/api/v1/auth/index.get.ts | 9 + .../server/api/v1/auth/signin/simple.post.ts | 7 + server/server/internal/P2P.md | 15 - server/server/internal/oidc/index.ts | 281 ++++++++++++++++++ server/server/plugins/04.auth-init.ts | 37 +++ server/server/plugins/redirect.ts | 1 + .../server/routes/auth/callback/oidc.get.ts | 36 +++ server/server/routes/auth/oidc.get.ts | 10 + 16 files changed, 533 insertions(+), 146 deletions(-) create mode 100644 server/components/Auth/OpenID.vue create mode 100644 server/components/Auth/Simple.vue create mode 100644 server/prisma/migrations/20250507120031_add_openid_authmek/migration.sql create mode 100644 server/server/api/v1/auth/index.get.ts delete mode 100644 server/server/internal/P2P.md create mode 100644 server/server/internal/oidc/index.ts create mode 100644 server/server/plugins/04.auth-init.ts create mode 100644 server/server/routes/auth/callback/oidc.get.ts create mode 100644 server/server/routes/auth/oidc.get.ts diff --git a/server/components/Auth/OpenID.vue b/server/components/Auth/OpenID.vue new file mode 100644 index 00000000..926e1103 --- /dev/null +++ b/server/components/Auth/OpenID.vue @@ -0,0 +1,10 @@ + diff --git a/server/components/Auth/Simple.vue b/server/components/Auth/Simple.vue new file mode 100644 index 00000000..c248f2f0 --- /dev/null +++ b/server/components/Auth/Simple.vue @@ -0,0 +1,124 @@ + + + diff --git a/server/package.json b/server/package.json index 43e321f9..5489fb35 100644 --- a/server/package.json +++ b/server/package.json @@ -58,6 +58,7 @@ "eslint": "^9.24.0", "eslint-config-prettier": "^10.1.1", "h3": "^1.15.1", + "ofetch": "^1.4.1", "postcss": "^8.4.47", "prettier": "^3.5.3", "sass": "^1.79.4", diff --git a/server/pages/auth/register.vue b/server/pages/auth/register.vue index 1abf5ed9..3ee5bd41 100644 --- a/server/pages/auth/register.vue +++ b/server/pages/auth/register.vue @@ -56,7 +56,7 @@ type="email" autocomplete="email" required - :disabled="!!invitation.data.value?.email" + :disabled="!!invitation?.email" placeholder="me@example.com" class="block w-full rounded-md border-0 py-1.5 px-3 bg-zinc-800 disabled:bg-zinc-900/80 text-zinc-100 disabled:text-zinc-400 shadow-sm ring-1 ring-inset ring-zinc-700 disabled:ring-zinc-800 placeholder:text-zinc-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6" /> @@ -87,7 +87,7 @@ type="text" autocomplete="username" required - :disabled="!!invitation.data.value?.username" + :disabled="!!invitation?.username" placeholder="myUsername" class="block w-full rounded-md border-0 py-1.5 px-3 bg-zinc-800 disabled:bg-zinc-900/80 text-zinc-100 disabled:text-zinc-400 shadow-sm ring-1 ring-inset ring-zinc-700 disabled:ring-zinc-800 placeholder:text-zinc-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm sm:leading-6" /> @@ -199,13 +199,13 @@ if (!invitationId) statusMessage: "Invitation required to sign up.", }); -const invitation = await useFetch( +const invitation = await $dropFetch( `/api/v1/auth/signup/simple?id=${encodeURIComponent(invitationId)}`, ); -const email = ref(invitation.data.value?.email); +const email = ref(invitation?.email); const displayName = ref(""); -const username = ref(invitation.data.value?.username); +const username = ref(invitation?.username); const password = ref(""); const confirmPassword = ref(undefined); diff --git a/server/pages/auth/signin.vue b/server/pages/auth/signin.vue index 9d9dd4f8..d833a4c4 100644 --- a/server/pages/auth/signin.vue +++ b/server/pages/auth/signin.vue @@ -18,92 +18,13 @@
-
-
- -
- -
-
- -
- -
- -
-
- -
-
- - -
- -
- Forgot password? -
-
- -
- - Sign in -
- -
-
-
-
-
-

- {{ error }} -

-
-
-
-
+ +
+ + OR + +
+
@@ -119,47 +40,9 @@