feat: Add authentication and session management with NextAuth.js and Prisma [broken]

- Implemented API session retrieval in `lib/api-auth.ts` to manage user sessions.
- Created authentication options in `lib/auth-options.ts` using NextAuth.js with credentials provider.
- Added migration scripts to create necessary tables for authentication in `migrations/0002_create_auth_tables.sql` and `prisma/migrations/20250601033219_add_nextauth_tables/migration.sql`.
- Configured ESLint with Next.js and TypeScript support in `eslint.config.mjs`.
- Updated Next.js configuration in `next.config.ts` for Cloudflare compatibility.
- Defined Cloudflare Worker configuration in `open-next.config.ts` and `wrangler.jsonc`.
- Enhanced type definitions for authentication in `types/auth.d.ts`.
- Created a Cloudflare Worker entry point in `src/index.ts.backup` to handle API requests and responses.
This commit is contained in:
2025-06-01 16:34:54 +02:00
parent 71c8aff125
commit bde0b44ea0
53 changed files with 20841 additions and 6435 deletions

View File

@ -4,27 +4,38 @@
"version": "0.2.0",
"private": true,
"scripts": {
"dev": "next dev --turbopack",
"build": "next build",
"format": "pnpm dlx prettier --write .",
"format:check": "pnpm dlx prettier --check .",
"format:standard": "pnpm dlx standard . --fix",
"start": "next start",
"lint": "next lint",
"deploy": "opennextjs-cloudflare build && opennextjs-cloudflare deploy",
"preview": "opennextjs-cloudflare build && opennextjs-cloudflare preview",
"cf-typegen": "wrangler types --env-interface CloudflareEnv ./cloudflare-env.d.ts",
"deploy:worker": "pnpm deploy",
"deploy:pages": "pnpm build && echo 'Upload the out/ directory to Cloudflare Pages'",
"format": "pnpm run format:prettier",
"format:check": "pnpm dlx prettier --check .",
"format:prettier": "pnpm dlx prettier --write .",
"format:standard": "pnpm dlx standard . --fix",
"lint:fix": "pnpm dlx eslint --fix",
"lint:md": "markdownlint-cli2 \"**/*.md\" \"!.trunk/**\" \"!.venv/**\" \"!node_modules/**\"",
"lint:md:fix": "markdownlint-cli2 --fix \"**/*.md\" \"!.trunk/**\" \"!.venv/**\" \"!node_modules/**\"",
"prisma:generate": "prisma generate",
"prisma:migrate": "prisma migrate dev",
"prisma:seed": "node prisma/seed.mjs",
"prisma:studio": "prisma studio",
"start": "next start",
"lint:md": "markdownlint-cli2 \"**/*.md\" \"!.trunk/**\" \"!.venv/**\" \"!node_modules/**\"",
"lint:md:fix": "markdownlint-cli2 --fix \"**/*.md\" \"!.trunk/**\" \"!.venv/**\" \"!node_modules/**\"",
"cf-typegen": "wrangler types",
"check": "tsc && wrangler deploy --dry-run",
"deploy": "wrangler deploy",
"dev": "next dev",
"dev:old": "next dev --turbopack",
"dev:cf": "wrangler dev",
"check": "pnpm build && wrangler deploy --dry-run",
"check:backup": "tsc && wrangler deploy --dry-run",
"predeploy": "wrangler d1 migrations apply DB --remote",
"predeploy:worker": "pnpm predeploy",
"seedLocalD1": "wrangler d1 migrations apply DB --local",
"d1:list": "wrangler d1 list",
"d1:info": "wrangler d1 info d1-notso-livedash",
"d1:info:remote": "wrangler d1 info d1-notso-livedash --remote",
@ -36,6 +47,8 @@
"d1": "node scripts/d1.js"
},
"dependencies": {
"@auth/d1-adapter": "^1.9.1",
"@opennextjs/cloudflare": "^1.1.0",
"@prisma/adapter-d1": "^6.8.2",
"@prisma/client": "^6.8.2",
"@rapideditor/country-coder": "^5.4.0",
@ -43,6 +56,7 @@
"@types/d3-cloud": "^1.2.9",
"@types/d3-selection": "^3.0.11",
"@types/geojson": "^7946.0.16",
"@types/jsonwebtoken": "^9.0.9",
"@types/leaflet": "^1.9.18",
"@types/node-fetch": "^2.6.12",
"bcryptjs": "^3.0.2",
@ -54,9 +68,10 @@
"d3-selection": "^3.0.0",
"i18n-iso-countries": "^7.14.0",
"iso-639-1": "^3.1.5",
"jsonwebtoken": "^9.0.2",
"leaflet": "^1.9.4",
"next": "^15.3.3",
"next-auth": "^4.24.11",
"next-auth": "5.0.0-beta.28",
"node-cron": "^4.1.0",
"node-fetch": "^3.3.2",
"react": "^19.1.0",
@ -78,6 +93,7 @@
"@types/react-dom": "^19.1.5",
"@typescript-eslint/eslint-plugin": "^8.33.0",
"@typescript-eslint/parser": "^8.33.0",
"concurrently": "^9.1.2",
"eslint": "^9.28.0",
"eslint-config-next": "^15.3.3",
"eslint-plugin-prettier": "^5.4.1",