-
-
-
-
-
-
-
-
- Your Social Campaigns
-
-
- New to Matdash?
-
- Create an account
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/auth/Loginn.vue b/pages/auth/Loginn.vue
new file mode 100644
index 0000000..48e47a8
--- /dev/null
+++ b/pages/auth/Loginn.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+ Your Social Campaigns
+
+
+ New to Matdash?
+
+ Create an account
+
+
+
+
+
+
+
+
diff --git a/pages/callback.vue b/pages/callback.vue
new file mode 100644
index 0000000..daea90d
--- /dev/null
+++ b/pages/callback.vue
@@ -0,0 +1,61 @@
+
+
+
User Profil:
+
{{ tokenUser }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/coba2.vue b/pages/coba2.vue
index bc440a5..e8fdf05 100644
--- a/pages/coba2.vue
+++ b/pages/coba2.vue
@@ -3,6 +3,7 @@
+
diff --git a/pages/signin.vue b/pages/signin.vue
new file mode 100644
index 0000000..b9b4da4
--- /dev/null
+++ b/pages/signin.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/base46.ts b/plugins/base46.ts
new file mode 100644
index 0000000..4c1b391
--- /dev/null
+++ b/plugins/base46.ts
@@ -0,0 +1,24 @@
+function encodeBase64(value: string): string {
+ if (process.client) {
+ return window.btoa(unescape(encodeURIComponent(value)))
+ } else {
+ return Buffer.from(value, 'ascii').toString('base64')
+ }
+}
+
+function decodeBase64(value: string): string {
+ if (process.client) {
+ return decodeURIComponent(escape(window.atob(value)))
+ } else {
+ return Buffer.from(value, 'base64').toString('ascii')
+ }
+}
+
+export default defineNuxtPlugin(() => {
+ return {
+ provide: {
+ encodeBase64,
+ decodeBase64
+ }
+ }
+})
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9ff65dc..0ec3563 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -20,6 +20,15 @@ dependencies:
apexcharts:
specifier: 4.5.0
version: 4.5.0
+ cors:
+ specifier: ^2.8.5
+ version: 2.8.5
+ nuxt-auth-utils:
+ specifier: ^0.5.16
+ version: 0.5.20
+ openid-client:
+ specifier: ^5.7.1
+ version: 5.7.1
sass:
specifier: 1.70.0
version: 1.70.0
@@ -40,12 +49,31 @@ dependencies:
version: 3.7.18(typescript@5.8.3)(vue@3.5.13)
devDependencies:
+ '@sidebase/nuxt-auth':
+ specifier: ^0.10.1
+ version: 0.10.1(next-auth@4.21.1)
nuxt:
specifier: 3.16.2
version: 3.16.2(sass@1.70.0)(typescript@5.8.3)(vite@6.3.5)
packages:
+ /@adonisjs/hash@9.1.1:
+ resolution: {integrity: sha512-ZkRguwjAp4skKvKDdRAfdJ2oqQ0N7p9l3sioyXO1E8o0WcsyDgEpsTQtuVNoIdMiw4sn4gJlmL3nyF4BcK1ZDQ==}
+ engines: {node: '>=20.6.0'}
+ peerDependencies:
+ argon2: ^0.31.2 || ^0.41.0 || ^0.43.0
+ bcrypt: ^5.1.1 || ^6.0.0
+ peerDependenciesMeta:
+ argon2:
+ optional: true
+ bcrypt:
+ optional: true
+ dependencies:
+ '@phc/format': 1.0.0
+ '@poppinss/utils': 6.9.4
+ dev: false
+
/@ampproject/remapping@2.3.0:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
@@ -252,6 +280,11 @@ packages:
transitivePeerDependencies:
- supports-color
+ /@babel/runtime@7.27.1:
+ resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
/@babel/template@7.27.2:
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
engines: {node: '>=6.9.0'}
@@ -618,6 +651,11 @@ packages:
resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==}
dev: true
+ /@lukeed/ms@2.0.2:
+ resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==}
+ engines: {node: '>=8'}
+ dev: false
+
/@mapbox/node-pre-gyp@1.0.11:
resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
hasBin: true
@@ -778,6 +816,91 @@ packages:
- supports-color
dev: true
+ /@next/env@13.5.11:
+ resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==}
+ dev: true
+
+ /@next/swc-darwin-arm64@13.5.9:
+ resolution: {integrity: sha512-pVyd8/1y1l5atQRvOaLOvfbmRwefxLhqQOzYo/M7FQ5eaRwA1+wuCn7t39VwEgDd7Aw1+AIWwd+MURXUeXhwDw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@next/swc-darwin-x64@13.5.9:
+ resolution: {integrity: sha512-DwdeJqP7v8wmoyTWPbPVodTwCybBZa02xjSJ6YQFIFZFZ7dFgrieKW4Eo0GoIcOJq5+JxkQyejmI+8zwDp3pwA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@next/swc-linux-arm64-gnu@13.5.9:
+ resolution: {integrity: sha512-wdQsKsIsGSNdFojvjW3Ozrh8Q00+GqL3wTaMjDkQxVtRbAqfFBtrLPO0IuWChVUP2UeuQcHpVeUvu0YgOP00+g==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@next/swc-linux-arm64-musl@13.5.9:
+ resolution: {integrity: sha512-6VpS+bodQqzOeCwGxoimlRoosiWlSc0C224I7SQWJZoyJuT1ChNCo+45QQH+/GtbR/s7nhaUqmiHdzZC9TXnXA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@next/swc-linux-x64-gnu@13.5.9:
+ resolution: {integrity: sha512-XxG3yj61WDd28NA8gFASIR+2viQaYZEFQagEodhI/R49gXWnYhiflTeeEmCn7Vgnxa/OfK81h1gvhUZ66lozpw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@next/swc-linux-x64-musl@13.5.9:
+ resolution: {integrity: sha512-/dnscWqfO3+U8asd+Fc6dwL2l9AZDl7eKtPNKW8mKLh4Y4wOpjJiamhe8Dx+D+Oq0GYVjuW0WwjIxYWVozt2bA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@next/swc-win32-arm64-msvc@13.5.9:
+ resolution: {integrity: sha512-T/iPnyurOK5a4HRUcxAlss8uzoEf5h9tkd+W2dSWAfzxv8WLKlUgbfk+DH43JY3Gc2xK5URLuXrxDZ2mGfk/jw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@next/swc-win32-ia32-msvc@13.5.9:
+ resolution: {integrity: sha512-BLiPKJomaPrTAb7ykjA0LPcuuNMLDVK177Z1xe0nAem33+9FIayU4k/OWrtSn9SAJW/U60+1hoey5z+KCHdRLQ==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@next/swc-win32-x64-msvc@13.5.9:
+ resolution: {integrity: sha512-/72/dZfjXXNY/u+n8gqZDjI6rxKMpYsgBBYNZKWOQw0BpBF7WCnPflRy3ZtvQ2+IYI3ZH2bPyj7K+6a6wNk90Q==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -1177,6 +1300,10 @@ packages:
resolution: {integrity: sha512-prhfNnb3ATFHOCv7mzKFfwLij5RzoUz6Y1n525ZhCEqfq5wreCXL+DyVoq3ShukPo7q45ZjYIdjFUgjj+WKzng==}
dev: true
+ /@panva/hkdf@1.2.1:
+ resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==}
+ dev: true
+
/@parcel/watcher-android-arm64@2.5.1:
resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
engines: {node: '>= 10.0.0'}
@@ -1315,6 +1442,11 @@ packages:
'@parcel/watcher-win32-ia32': 2.5.1
'@parcel/watcher-win32-x64': 2.5.1
+ /@phc/format@1.0.0:
+ resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==}
+ engines: {node: '>=10'}
+ dev: false
+
/@pkgjs/parseargs@0.11.0:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -1348,7 +1480,36 @@ packages:
/@poppinss/exception@1.2.1:
resolution: {integrity: sha512-aQypoot0HPSJa6gDPEPTntc1GT6QINrSbgRlRhadGW2WaYqUK3tK4Bw9SBMZXhmxd3GeAlZjVcODHgiu+THY7A==}
engines: {node: '>=18'}
- dev: true
+
+ /@poppinss/object-builder@1.1.0:
+ resolution: {integrity: sha512-FOrOq52l7u8goR5yncX14+k+Ewi5djnrt1JwXeS/FvnwAPOiveFhiczCDuvXdssAwamtrV2hp5Rw9v+n2T7hQg==}
+ engines: {node: '>=20.6.0'}
+ dev: false
+
+ /@poppinss/string@1.6.0:
+ resolution: {integrity: sha512-HfAf9VqTvo31BsruwgwEauQ316RNODdryk6QgYZo4qTV50s0h1H9HmIr+QjwwI3u4Sz7r4Q1dd1EVaLB7pWlaw==}
+ dependencies:
+ '@lukeed/ms': 2.0.2
+ '@types/bytes': 3.1.5
+ '@types/pluralize': 0.0.33
+ bytes: 3.1.2
+ case-anything: 3.1.2
+ pluralize: 8.0.0
+ slugify: 1.6.6
+ truncatise: 0.0.8
+ dev: false
+
+ /@poppinss/utils@6.9.4:
+ resolution: {integrity: sha512-KJe9/ebFBqb4fFBdadgN4YgT4bHAKdWhLAFzjaeDqx5vOCtD3C+byN5DrORVNbwAjt+rb8beP8pXaWZWx+WmTA==}
+ engines: {node: '>=18.16.0'}
+ dependencies:
+ '@poppinss/exception': 1.2.1
+ '@poppinss/object-builder': 1.1.0
+ '@poppinss/string': 1.6.0
+ flattie: 1.1.1
+ safe-stable-stringify: 2.5.0
+ secure-json-parse: 4.0.0
+ dev: false
/@rolldown/pluginutils@1.0.0-beta.9:
resolution: {integrity: sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==}
@@ -1611,6 +1772,51 @@ packages:
requiresBuild: true
optional: true
+ /@sidebase/nuxt-auth@0.10.1(next-auth@4.21.1):
+ resolution: {integrity: sha512-fCSDfGl6npVIWrb//NbeKA16ATk1CpjzfRrNAdJ2PRr0BF5aJz6KCvDI8dSzs5VLMJBIRLR39G2rWYq5q+v5iA==}
+ engines: {node: '>=20', pnpm: '>=9.4.0'}
+ peerDependencies:
+ next-auth: ~4.21.1
+ dependencies:
+ '@nuxt/kit': 3.17.4(magicast@0.3.5)
+ defu: 6.1.4
+ h3: 1.15.3
+ knitwork: 1.2.0
+ next-auth: 4.21.1(next@13.5.11)(react-dom@18.3.1)(react@18.3.1)
+ nitropack: 2.11.12
+ requrl: 3.0.2
+ scule: 1.3.0
+ ufo: 1.6.1
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/kv'
+ - aws4fetch
+ - better-sqlite3
+ - drizzle-orm
+ - encoding
+ - idb-keyval
+ - magicast
+ - mysql2
+ - rolldown
+ - sqlite3
+ - supports-color
+ - uploadthing
+ - xml2js
+ dev: true
+
/@sindresorhus/is@7.0.1:
resolution: {integrity: sha512-QWLl2P+rsCJeofkDNIT3WFmb6NrRud1SUYW8dIhXK/46XFV8Q/g7Bsvib0Askb0reRLe+WYPeeE+l5cH7SlkuQ==}
engines: {node: '>=18'}
@@ -1663,6 +1869,12 @@ packages:
'@svgdotjs/svg.js': 3.2.4
dev: false
+ /@swc/helpers@0.5.2:
+ resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
+ dependencies:
+ tslib: 2.8.1
+ dev: true
+
/@trysound/sax@0.2.0:
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
@@ -1675,6 +1887,10 @@ packages:
dev: true
optional: true
+ /@types/bytes@3.1.5:
+ resolution: {integrity: sha512-VgZkrJckypj85YxEsEavcMmmSOIzkUHqWmM4CCyia5dc54YwsXzJ5uT4fYxBQNEXx+oF1krlhgCbvfubXqZYsQ==}
+ dev: false
+
/@types/estree@1.0.7:
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
@@ -1697,6 +1913,10 @@ packages:
parse-path: 7.1.0
dev: true
+ /@types/pluralize@0.0.33:
+ resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==}
+ dev: false
+
/@types/resolve@1.20.2:
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
dev: true
@@ -2470,6 +2690,18 @@ packages:
run-applescript: 7.0.0
dev: true
+ /busboy@1.6.0:
+ resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
+ engines: {node: '>=10.16.0'}
+ dependencies:
+ streamsearch: 1.1.0
+ dev: true
+
+ /bytes@3.1.2:
+ resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
/c12@3.0.4(magicast@0.3.5):
resolution: {integrity: sha512-t5FaZTYbbCtvxuZq9xxIruYydrAGsJ+8UdP0pZzMiK2xl/gNiSOy0OxhLzHUEEb0m1QXYqfzfvyIFEmz/g9lqg==}
peerDependencies:
@@ -2526,6 +2758,11 @@ packages:
/caniuse-lite@1.0.30001718:
resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==}
+ /case-anything@3.1.2:
+ resolution: {integrity: sha512-wljhAjDDIv/hM2FzgJnYQg90AWmZMNtESCjTeLH680qTzdo0nErlCxOmgzgX4ZsZAtIvqHyD87ES8QyriXB+BQ==}
+ engines: {node: '>=18'}
+ dev: false
+
/chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -2561,6 +2798,10 @@ packages:
dependencies:
consola: 3.4.2
+ /client-only@0.0.1:
+ resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+ dev: true
+
/clipboardy@4.0.0:
resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==}
engines: {node: '>=18'}
@@ -2723,6 +2964,11 @@ packages:
resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==}
dev: true
+ /cookie@0.5.0:
+ resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
/cookie@1.0.2:
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
engines: {node: '>=18'}
@@ -2739,6 +2985,14 @@ packages:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: true
+ /cors@2.8.5:
+ resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+ dev: false
+
/cp-file@10.0.0:
resolution: {integrity: sha512-vy2Vi1r2epK5WqxOLnskeKeZkdZvTKfFZQCplE3XWsP+SUJyd5XAUFC9lFgTjjXJF2GMne/UML14iEmkAaDfFg==}
engines: {node: '>=14.16'}
@@ -3591,6 +3845,11 @@ packages:
unicorn-magic: 0.1.0
dev: true
+ /flattie@1.1.1:
+ resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
+ engines: {node: '>=8'}
+ dev: false
+
/fn.name@1.1.0:
resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==}
dev: true
@@ -3772,6 +4031,10 @@ packages:
dependencies:
is-glob: 4.0.3
+ /glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+ dev: true
+
/glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
@@ -3900,7 +4163,6 @@ packages:
/hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
- dev: true
/hosted-git-info@7.0.2:
resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
@@ -4209,6 +4471,17 @@ packages:
resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
hasBin: true
+ /jose@4.15.9:
+ resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==}
+
+ /jose@5.10.0:
+ resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==}
+ dev: false
+
+ /jose@6.0.11:
+ resolution: {integrity: sha512-QxG7EaliDARm1O1S8BGakqncGT9s25bKL1WSf6/oa17Tkqwi8D2ZNglqCF+DsYF88/rV66Q/Q2mFAy697E1DUg==}
+ dev: false
+
/js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -4381,6 +4654,13 @@ packages:
triple-beam: 1.4.1
dev: true
+ /loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+ dependencies:
+ js-tokens: 4.0.0
+ dev: true
+
/lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
dev: true
@@ -4390,6 +4670,12 @@ packages:
dependencies:
yallist: 3.1.1
+ /lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+
/luxon@3.6.1:
resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==}
engines: {node: '>=12'}
@@ -4642,6 +4928,71 @@ packages:
qs: 6.14.0
dev: true
+ /next-auth@4.21.1(next@13.5.11)(react-dom@18.3.1)(react@18.3.1):
+ resolution: {integrity: sha512-NYkU4jAPSVxWhCblE8dDFAnKM7kOoO/QEobQ0RoEVP9Wox99A3PKHwOAsWhSg8ahJG/iKIWk2Bo1xHvsS4R39Q==}
+ peerDependencies:
+ next: ^12.2.5 || ^13
+ nodemailer: ^6.6.5
+ react: ^17.0.2 || ^18
+ react-dom: ^17.0.2 || ^18
+ peerDependenciesMeta:
+ nodemailer:
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.27.1
+ '@panva/hkdf': 1.2.1
+ cookie: 0.5.0
+ jose: 4.15.9
+ next: 13.5.11(@babel/core@7.27.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.70.0)
+ oauth: 0.9.15
+ openid-client: 5.7.1
+ preact: 10.26.7
+ preact-render-to-string: 5.2.6(preact@10.26.7)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ uuid: 8.3.2
+ dev: true
+
+ /next@13.5.11(@babel/core@7.27.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.70.0):
+ resolution: {integrity: sha512-WUPJ6WbAX9tdC86kGTu92qkrRdgRqVrY++nwM+shmWQwmyxt4zhZfR59moXSI4N8GDYCBY3lIAqhzjDd4rTC8Q==}
+ engines: {node: '>=16.14.0'}
+ hasBin: true
+ peerDependencies:
+ '@opentelemetry/api': ^1.1.0
+ react: ^18.2.0
+ react-dom: ^18.2.0
+ sass: ^1.3.0
+ peerDependenciesMeta:
+ '@opentelemetry/api':
+ optional: true
+ sass:
+ optional: true
+ dependencies:
+ '@next/env': 13.5.11
+ '@swc/helpers': 0.5.2
+ busboy: 1.6.0
+ caniuse-lite: 1.0.30001718
+ postcss: 8.4.31
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ sass: 1.70.0
+ styled-jsx: 5.1.1(@babel/core@7.27.1)(react@18.3.1)
+ watchpack: 2.4.0
+ optionalDependencies:
+ '@next/swc-darwin-arm64': 13.5.9
+ '@next/swc-darwin-x64': 13.5.9
+ '@next/swc-linux-arm64-gnu': 13.5.9
+ '@next/swc-linux-arm64-musl': 13.5.9
+ '@next/swc-linux-x64-gnu': 13.5.9
+ '@next/swc-linux-x64-musl': 13.5.9
+ '@next/swc-win32-arm64-msvc': 13.5.9
+ '@next/swc-win32-ia32-msvc': 13.5.9
+ '@next/swc-win32-x64-msvc': 13.5.9
+ transitivePeerDependencies:
+ - '@babel/core'
+ - babel-plugin-macros
+ dev: true
+
/nitropack@2.11.12:
resolution: {integrity: sha512-e2AdQrEY1IVoNTdyjfEQV93xkqz4SQxAMR0xWF8mZUUHxMLm6S4nPzpscjksmT4OdUxl0N8/DCaGjKQ9ghdodA==}
engines: {node: ^16.11.0 || >=17.0.0}
@@ -4885,6 +5236,40 @@ packages:
dependencies:
boolbase: 1.0.0
+ /nuxt-auth-utils@0.5.20:
+ resolution: {integrity: sha512-hoXopfYeK4Cdu17WxxDWYc66EH7ZYG8JUodPxxef9vjfXOXqz3s1gxi/JWsiqkwN6s7K1RpKEESZGg1EopCgAA==}
+ peerDependencies:
+ '@atproto/api': ^0.13.15
+ '@atproto/oauth-client-node': ^0.2.0
+ '@simplewebauthn/browser': ^11.0.0
+ '@simplewebauthn/server': ^11.0.0
+ peerDependenciesMeta:
+ '@atproto/api':
+ optional: true
+ '@atproto/oauth-client-node':
+ optional: true
+ '@simplewebauthn/browser':
+ optional: true
+ '@simplewebauthn/server':
+ optional: true
+ dependencies:
+ '@adonisjs/hash': 9.1.1
+ '@nuxt/kit': 3.17.4(magicast@0.3.5)
+ defu: 6.1.4
+ h3: 1.15.3
+ hookable: 5.5.3
+ jose: 5.10.0
+ ofetch: 1.4.1
+ openid-client: 6.5.0
+ pathe: 2.0.3
+ scule: 1.3.0
+ uncrypto: 0.1.3
+ transitivePeerDependencies:
+ - argon2
+ - bcrypt
+ - magicast
+ dev: false
+
/nuxt@3.16.2(sass@1.70.0)(typescript@5.8.3)(vite@6.3.5):
resolution: {integrity: sha512-yjIC/C4HW8Pd+m0ACGliEF0HnimXYGYvUzjOsTiLQKkDDt2T+djyZ+pCl9BfhQBA8rYmnsym2jUI+ubjv1iClw==}
engines: {node: ^18.12.0 || ^20.9.0 || >=22.0.0}
@@ -5026,10 +5411,21 @@ packages:
pkg-types: 2.1.0
tinyexec: 0.3.2
+ /oauth4webapi@3.5.1:
+ resolution: {integrity: sha512-txg/jZQwcbaF7PMJgY7aoxc9QuCxHVFMiEkDIJ60DwDz3PbtXPQnrzo+3X4IRYGChIwWLabRBRpf1k9hO9+xrQ==}
+ dev: false
+
+ /oauth@0.9.15:
+ resolution: {integrity: sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==}
+ dev: true
+
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
- dev: true
+
+ /object-hash@2.2.0:
+ resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==}
+ engines: {node: '>= 6'}
/object-inspect@1.13.4:
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
@@ -5042,11 +5438,14 @@ packages:
destr: 2.0.5
node-fetch-native: 1.6.6
ufo: 1.6.1
- dev: true
/ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
+ /oidc-token-hash@5.1.0:
+ resolution: {integrity: sha512-y0W+X7Ppo7oZX6eovsRkuzcSM40Bicg2JEJkDJ4irIt1wsYAP5MLSNv+QAogO8xivMffw/9OvV3um1pxXgt1uA==}
+ engines: {node: ^10.13.0 || >=12.0.0}
+
/on-change@5.0.1:
resolution: {integrity: sha512-n7THCP7RkyReRSLkJb8kUWoNsxUIBxTkIp3JKno+sEz6o/9AJ3w3P9fzQkITEkMwyTKJjZciF3v/pVoouxZZMg==}
engines: {node: '>=18'}
@@ -5096,6 +5495,21 @@ packages:
is-docker: 2.2.1
is-wsl: 2.2.0
+ /openid-client@5.7.1:
+ resolution: {integrity: sha512-jDBPgSVfTnkIh71Hg9pRvtJc6wTwqjRkN88+gCFtYWrlP4Yx2Dsrow8uPi3qLr/aeymPF3o2+dS+wOpglK04ew==}
+ dependencies:
+ jose: 4.15.9
+ lru-cache: 6.0.0
+ object-hash: 2.2.0
+ oidc-token-hash: 5.1.0
+
+ /openid-client@6.5.0:
+ resolution: {integrity: sha512-fAfYaTnOYE2kQCqEJGX9KDObW2aw7IQy4jWpU/+3D3WoCFLbix5Hg6qIPQ6Js9r7f8jDUmsnnguRNCSw4wU/IQ==}
+ dependencies:
+ jose: 6.0.11
+ oauth4webapi: 3.5.1
+ dev: false
+
/oxc-parser@0.56.5:
resolution: {integrity: sha512-MNT32sqiTFeSbQZP2WZIRQ/mlIpNNq4sua+/4hBG4qT5aef2iQe+1/BjezZURPlvucZeSfN1Y6b60l7OgBdyUA==}
engines: {node: '>=14.0.0'}
@@ -5288,6 +5702,11 @@ packages:
exsolve: 1.0.5
pathe: 2.0.3
+ /pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+ dev: false
+
/postcss-calc@10.1.1(postcss@8.5.3):
resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==}
engines: {node: ^18.12 || ^20.9 || >=22.0}
@@ -5879,6 +6298,15 @@ packages:
source-map: 0.6.1
dev: false
+ /postcss@8.4.31:
+ resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+ dev: true
+
/postcss@8.5.3:
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
engines: {node: ^10 || ^12 || >=14}
@@ -5887,6 +6315,19 @@ packages:
picocolors: 1.1.1
source-map-js: 1.2.1
+ /preact-render-to-string@5.2.6(preact@10.26.7):
+ resolution: {integrity: sha512-JyhErpYOvBV1hEPwIxc/fHWXPfnEGdRKxc8gFdAZ7XV4tlzyzG847XAyEZqoDnynP88akM4eaHcSOzNcLWFguw==}
+ peerDependencies:
+ preact: '>=10'
+ dependencies:
+ preact: 10.26.7
+ pretty-format: 3.8.0
+ dev: true
+
+ /preact@10.26.7:
+ resolution: {integrity: sha512-43xS+QYc1X1IPbw03faSgY6I6OYWcLrJRv3hU0+qMOfh/XCHcP0MX2CVjNARYR2cC/guu975sta4OcjlczxD7g==}
+ dev: true
+
/precinct@11.0.5:
resolution: {integrity: sha512-oHSWLC8cL/0znFhvln26D14KfCQFFn4KOLSw6hmLhd+LQ2SKt9Ljm89but76Pc7flM9Ty1TnXyrA2u16MfRV3w==}
engines: {node: ^14.14.0 || >=16.0.0}
@@ -5913,6 +6354,10 @@ packages:
engines: {node: ^14.13.1 || >=16.0.0}
dev: true
+ /pretty-format@3.8.0:
+ resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
+ dev: true
+
/process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: true
@@ -5982,6 +6427,23 @@ packages:
defu: 6.1.4
destr: 2.0.5
+ /react-dom@18.3.1(react@18.3.1):
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+ dev: true
+
+ /react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: true
+
/read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
dependencies:
@@ -6080,6 +6542,10 @@ packages:
resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==}
dev: true
+ /requrl@3.0.2:
+ resolution: {integrity: sha512-f3gjR6d8MhOpn46PP+DSJywbmxi95fxQm3coXBFwognjFLla9X6tr8BdNyaIKNOEkaRbRcm0/zYAqN19N1oyhg==}
+ dev: true
+
/resolve-from@5.0.0:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
@@ -6188,7 +6654,6 @@ packages:
/safe-stable-stringify@2.5.0:
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
engines: {node: '>=10'}
- dev: true
/sass@1.70.0:
resolution: {integrity: sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==}
@@ -6211,9 +6676,19 @@ packages:
'@parcel/watcher': 2.5.1
dev: false
+ /scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: true
+
/scule@1.3.0:
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
+ /secure-json-parse@4.0.0:
+ resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==}
+ dev: false
+
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -6377,6 +6852,11 @@ packages:
resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
engines: {node: '>=14.16'}
+ /slugify@1.6.6:
+ resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==}
+ engines: {node: '>=8.0.0'}
+ dev: false
+
/smob@1.5.0:
resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==}
dev: true
@@ -6448,6 +6928,11 @@ packages:
/std-env@3.9.0:
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
+ /streamsearch@1.1.0:
+ resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
+ engines: {node: '>=10.0.0'}
+ dev: true
+
/streamx@2.22.0:
resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==}
dependencies:
@@ -6512,6 +6997,24 @@ packages:
resolution: {integrity: sha512-FL8EeKFFyNQv5cMnXI31CIMCsFarSVI2bF0U0ImeNE3g/F1IvJQyqzOXxPBRXiwQfyBTlbNe88jh1jFW0O/jiQ==}
dev: true
+ /styled-jsx@5.1.1(@babel/core@7.27.1)(react@18.3.1):
+ resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
+ engines: {node: '>= 12.0.0'}
+ peerDependencies:
+ '@babel/core': '*'
+ babel-plugin-macros: '*'
+ react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ babel-plugin-macros:
+ optional: true
+ dependencies:
+ '@babel/core': 7.27.1
+ client-only: 0.0.1
+ react: 18.3.1
+ dev: true
+
/stylehacks@5.1.1(postcss@8.5.3):
resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
engines: {node: ^10 || ^12 || >=14.0}
@@ -6719,6 +7222,10 @@ packages:
dompurify: 3.2.6
dev: false
+ /truncatise@0.0.8:
+ resolution: {integrity: sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg==}
+ dev: false
+
/tslib@1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true
@@ -7022,6 +7529,11 @@ packages:
hasBin: true
dev: true
+ /uuid@8.3.2:
+ resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
+ hasBin: true
+ dev: true
+
/validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
dependencies:
@@ -7029,6 +7541,11 @@ packages:
spdx-expression-parse: 3.0.1
dev: true
+ /vary@1.1.2:
+ resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
+ engines: {node: '>= 0.8'}
+ dev: false
+
/vite-dev-rpc@1.0.7(vite@6.3.5):
resolution: {integrity: sha512-FxSTEofDbUi2XXujCA+hdzCDkXFG1PXktMjSk1efq9Qb5lOYaaM9zNSvKvPPF7645Bak79kSp1PTooMW2wktcA==}
peerDependencies:
@@ -7288,6 +7805,14 @@ packages:
vue: 3.5.13(typescript@5.8.3)
dev: false
+ /watchpack@2.4.0:
+ resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ glob-to-regexp: 0.4.1
+ graceful-fs: 4.2.11
+ dev: true
+
/web-streams-polyfill@3.3.3:
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
engines: {node: '>= 8'}
@@ -7410,7 +7935,6 @@ packages:
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
- dev: true
/yallist@5.0.0:
resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
diff --git a/server/api/auth/[...].ts b/server/api/auth/[...].ts
new file mode 100644
index 0000000..2281299
--- /dev/null
+++ b/server/api/auth/[...].ts
@@ -0,0 +1,58 @@
+// import CredentialsProvider from 'next-auth/providers/credentials'
+import KeycloakProvider from 'next-auth/providers/keycloak'
+import { NuxtAuthHandler } from '#auth'
+console.log(KeycloakProvider)
+export default NuxtAuthHandler({
+ // TODO: SET A STRONG SECRET, SEE https://sidebase.io/nuxt-auth/configuration/nuxt-auth-handler#secret
+ secret: process.env.AUTH_SECRET || '32HslhZ8Hn97SsbxcmowhXvmNZ9cPGNE',
+ // TODO: ADD YOUR OWN AUTHENTICATION PROVIDER HERE, READ THE DOCS FOR MORE: https://sidebase.io/nuxt-auth
+ providers: [
+ // @ts-expect-error You need to use .default here for it to work during SSR. May be fixed via Vite at some point
+ KeycloakProvider.default({
+ clientId: process.env.KEYCLOAK_ID,
+ clientSecret: process.env.KEYCLOAK_SECRET,
+ issuer: process.env.KEYCLOAK_ISSUER,
+ }),
+ // // @ts-expect-error You need to use .default here for it to work during SSR. May be fixed via Vite at some point
+ // CredentialsProvider.default({
+ // // The name to display on the sign in form (e.g. 'Sign in with...')
+ // name: 'Credentials',
+ // // The credentials is used to generate a suitable form on the sign in page.
+ // // You can specify whatever fields you are expecting to be submitted.
+ // // e.g. domain, username, password, 2FA token, etc.
+ // // You can pass any HTML attribute to the
tag through the object.
+ // credentials: {
+ // username: { label: 'Username', type: 'text', placeholder: '(hint: jsmith)' },
+ // password: { label: 'Password', type: 'password', placeholder: '(hint: hunter2)' }
+ // },
+ // authorize (credentials: any) {
+ // console.warn('ATTENTION: You should replace this with your real providers or credential provider logic! The current setup is not safe')
+ // // You need to provide your own logic here that takes the credentials
+ // // submitted and returns either a object representing a user or value
+ // // that is false/null if the credentials are invalid.
+ // // NOTE: THE BELOW LOGIC IS NOT SAFE OR PROPER FOR AUTHENTICATION!
+
+ // const user = { id: '1', name: 'J Smith', username: 'jsmith', password: 'hunter2' }
+
+ // if (credentials?.username === user.username && credentials?.password === user.password) {
+ // // Any object returned will be saved in `user` property of the JWT
+ // return user
+ // } else {
+ // console.error('Warning: Malicious login attempt registered, bad credentials provided')
+
+ // // If you return null then an error will be displayed advising the user to check their details.
+ // return null
+
+ // // You can also Reject this callback with an Error thus the user will be sent to the error page with the error message as a query parameter
+ // }
+ // }
+ // })
+ ],
+ pages: {
+ signIn: '/auth/login',
+ // signOut: '/auth/signOut',
+ // error: '/auth/error',
+ // verifyRequest: '/auth/verify-request',
+ // newUser: '/auth/new-user'
+ },
+})
diff --git a/server/middleware/auth.ts b/server/middleware/auth.ts
new file mode 100644
index 0000000..f83ff75
--- /dev/null
+++ b/server/middleware/auth.ts
@@ -0,0 +1,17 @@
+import { getServerSession, getToken } from '#auth'
+
+export default eventHandler(async (event) => {
+ return
+ const session = await getServerSession(event)
+ if (!session) {
+ event.context.auth = false
+ } else {
+ const token = await getToken({ event })
+ event.context.auth = { token }
+ }
+})
+// export default defineEventHandler((event) => {
+// if (!event.node.req.headers.origin) {
+// event.node.req.headers.origin = process.env.NUXT_AUTH_ORIGIN
+// }
+// })
\ No newline at end of file