diff --git a/apps/app/middleware/auth.ts b/apps/app/middleware/auth.ts new file mode 100644 index 0000000..f625904 --- /dev/null +++ b/apps/app/middleware/auth.ts @@ -0,0 +1,11 @@ +/** + * Middleware de navigation — protège les pages authentifiées. + * Usage : definePageMeta({ middleware: 'auth' }) dans la page. + * Redirige vers /connexion si la session est absente. + */ +export default defineNuxtRouteMiddleware(async () => { + const { session } = useAuth() + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const s = (session as any)?.value ?? session + if (!s) return navigateTo('/connexion') +}) diff --git a/apps/app/package.json b/apps/app/package.json index eb9131f..2aa4de6 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -18,12 +18,15 @@ "dependencies": { "@cvo/shared": "workspace:*", "@prisma/client": "^6.2.1", + "better-auth": "^1.6.15", + "nodemailer": "^8.0.10", "playwright-core": "^1.60.0", "zod": "^4.4.3" }, "devDependencies": { "@tailwindcss/vite": "^4.0.0", "@types/node": "^22.10.5", + "@types/nodemailer": "^8.0.0", "nuxt": "^3.15.0", "prisma": "^6.2.1", "tailwindcss": "^4.0.0", diff --git a/apps/app/pages/profil.vue b/apps/app/pages/profil.vue new file mode 100644 index 0000000..7696ee9 --- /dev/null +++ b/apps/app/pages/profil.vue @@ -0,0 +1,373 @@ + + +