From 856dfbd119869b7a44ceab6873cc558bda816c6b Mon Sep 17 00:00:00 2001 From: legonzaur Date: Sun, 29 Dec 2024 12:11:11 +0100 Subject: [PATCH] Initial commit --- .vscode/launch.json | 33 +++++++++++++++++++++++++++++++++ .vscode/settings.json | 6 ++++++ app.vue | 6 ++++++ middleware/auth.global.ts | 23 +++++++++++++++++++++++ nuxt.config.ts | 16 +++++++++++++++- package-lock.json | 14 ++++++++++++++ package.json | 2 ++ pages/index.vue | 3 +++ pages/login.vue | 3 +++ 9 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 middleware/auth.global.ts create mode 100644 pages/index.vue create mode 100644 pages/login.vue diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..050b8d6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,33 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "client: chrome", + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}" + }, + { + "type": "node", + "request": "launch", + "name": "server: nuxt", + "outputCapture": "std", + "program": "${workspaceFolder}/node_modules/nuxi/bin/nuxi.mjs", + "args": [ + "dev" + ], + } + ], + "compounds": [ + { + "name": "fullstack: nuxt", + "configurations": [ + "server: nuxt", + "client: chrome" + ] + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3a6150d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "files.exclude": { + "**/.nuxt": true, + "**/node_modules": true + } +} \ No newline at end of file diff --git a/app.vue b/app.vue index 09f935b..41705f0 100644 --- a/app.vue +++ b/app.vue @@ -1,6 +1,12 @@ + diff --git a/middleware/auth.global.ts b/middleware/auth.global.ts new file mode 100644 index 0000000..aab8c89 --- /dev/null +++ b/middleware/auth.global.ts @@ -0,0 +1,23 @@ +const validPaths = ["/", "/rules", "/test"]; + +export default defineNuxtRouteMiddleware(async (to, from) => { + const config = useRuntimeConfig(); + if (to.path == "/login") { + console.log("hey") + const code = to.query.code; + if (!code) { + navigateTo(config.public.discordLoginEndpoint, { external: true }); + } else { + navigateTo("/login"); + } + return + } + + + if (validPaths.includes(to.path)) { + return; + } + if (to.path !== "/") { + return navigateTo("/"); + } +}); diff --git a/nuxt.config.ts b/nuxt.config.ts index 8ae12e6..6dda248 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,5 +1,19 @@ // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ compatibilityDate: '2024-11-01', - devtools: { enabled: true } + ssr: true, + devtools: { enabled: true }, + runtimeConfig: { + public: { + endpoint: "https://playtest.legonzaur.fr/api", // can be overridden by NUXT_PUBLIC_ENDPOINT environment variable + discordLoginEndpoint: "", + devMode: false, + }, + }, + nitro: { + prerender: { + routes: ["/login", "/"], + crawlLinks: true, + }, + }, }) diff --git a/package-lock.json b/package-lock.json index a2c4b12..4852a19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,9 @@ "name": "nuxt-app", "hasInstallScript": true, "dependencies": { + "class-transformer": "^0.5.1", "nuxt": "^3.15.0", + "reflect-metadata": "^0.2.2", "vue": "latest", "vue-router": "latest" } @@ -3404,6 +3406,12 @@ "consola": "^3.2.3" } }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "license": "MIT" + }, "node_modules/clipboardy": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", @@ -7148,6 +7156,12 @@ "node": ">=4" } }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", diff --git a/package.json b/package.json index 04026a6..cf75e17 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,9 @@ "postinstall": "nuxt prepare" }, "dependencies": { + "class-transformer": "^0.5.1", "nuxt": "^3.15.0", + "reflect-metadata": "^0.2.2", "vue": "latest", "vue-router": "latest" } diff --git a/pages/index.vue b/pages/index.vue new file mode 100644 index 0000000..5566a7a --- /dev/null +++ b/pages/index.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/pages/login.vue b/pages/login.vue new file mode 100644 index 0000000..5566a7a --- /dev/null +++ b/pages/login.vue @@ -0,0 +1,3 @@ + \ No newline at end of file