From 6222b7ba189c040bfd383e661e5e41f14bec0818 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Fri, 17 May 2024 23:22:44 +0300 Subject: [PATCH] beginning authorize --- package-lock.json | 9 + package.json | 1 + private/.gitignore | 2 + src/app.d.ts | 4 +- src/lib/components/avatar/AvatarCard.svelte | 11 +- src/lib/i18n/en/common.json | 4 +- src/lib/i18n/en/oauth2.json | 16 ++ src/lib/i18n/index.ts | 5 + src/lib/server/crypto-utils.ts | 16 ++ src/lib/server/drizzle/schema.ts | 87 +++--- src/lib/server/jwt.ts | 42 +++ src/lib/server/oauth2/.gitignore | 1 + src/lib/server/oauth2/authorization.ts | 272 ++++++++++++++++++ src/lib/server/oauth2/error.ts | 103 +++++++ src/lib/server/oauth2/index.ts | 1 + src/lib/server/oauth2/model/client.ts | 142 ++++++++++ src/lib/server/oauth2/model/index.ts | 2 + src/lib/server/oauth2/model/tokens.ts | 296 ++++++++++++++++++++ src/lib/server/oauth2/model/user.ts | 109 +++++++ src/lib/server/oauth2/response.ts | 127 +++++++++ src/lib/server/users/index.ts | 19 ++ src/lib/server/users/totp.ts | 4 +- src/routes/oauth2/authorize/+page.server.ts | 40 +++ src/routes/oauth2/authorize/+page.svelte | 63 +++++ 24 files changed, 1333 insertions(+), 43 deletions(-) create mode 100644 private/.gitignore create mode 100644 src/lib/i18n/en/oauth2.json create mode 100644 src/lib/server/jwt.ts create mode 100644 src/lib/server/oauth2/.gitignore create mode 100644 src/lib/server/oauth2/authorization.ts create mode 100644 src/lib/server/oauth2/error.ts create mode 100644 src/lib/server/oauth2/index.ts create mode 100644 src/lib/server/oauth2/model/client.ts create mode 100644 src/lib/server/oauth2/model/index.ts create mode 100644 src/lib/server/oauth2/model/tokens.ts create mode 100644 src/lib/server/oauth2/model/user.ts create mode 100644 src/lib/server/oauth2/response.ts create mode 100644 src/routes/oauth2/authorize/+page.server.ts create mode 100644 src/routes/oauth2/authorize/+page.svelte diff --git a/package-lock.json b/package-lock.json index 007548a..ef62603 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "bcryptjs": "^2.4.3", "cropperjs": "^1.6.2", "drizzle-orm": "^0.30.10", + "jose": "^5.3.0", "mime-types": "^2.1.35", "mysql2": "^3.9.7", "otplib": "^12.0.1", @@ -3751,6 +3752,14 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, + "node_modules/jose": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.3.0.tgz", + "integrity": "sha512-IChe9AtAE79ru084ow8jzkN2lNrG3Ntfiv65Cvj9uOCE2m5LNsdHG+9EbxWxAoWRF9TgDOqLN5jm08++owDVRg==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", diff --git a/package.json b/package.json index 9571a49..5587956 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "bcryptjs": "^2.4.3", "cropperjs": "^1.6.2", "drizzle-orm": "^0.30.10", + "jose": "^5.3.0", "mime-types": "^2.1.35", "mysql2": "^3.9.7", "otplib": "^12.0.1", diff --git a/private/.gitignore b/private/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/private/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/src/app.d.ts b/src/app.d.ts index d83caae..e3e3e2c 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,9 +1,10 @@ +import type { User } from '$lib/server/drizzle'; import type { UserSession } from '$lib/server/users/types'; import type { Session } from 'svelte-kit-cookie-session'; type SessionData = { user?: UserSession; -} +}; // See https://kit.svelte.dev/docs/types#app // for information about these interfaces @@ -13,6 +14,7 @@ declare global { interface Locals { session: Session; + user: User; } interface PageData { diff --git a/src/lib/components/avatar/AvatarCard.svelte b/src/lib/components/avatar/AvatarCard.svelte index c99d313..ee00d7b 100644 --- a/src/lib/components/avatar/AvatarCard.svelte +++ b/src/lib/components/avatar/AvatarCard.svelte @@ -1,11 +1,11 @@ -
+
{user.username}
@@ -18,7 +18,10 @@