diff --git a/README.md b/README.md index a262a1b..ffcee64 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ ## To do -- [ ] Add user authentication +- [ ] Add user creation in database +- [ ] Add user profile and settings (i.e. language) - [ ] Add user roles - [ ] Add user permissions -- [ ] Add user profile - [ ] Add user notifications and emails - [ ] Add user invoices - [ ] Add cron jobs to import data diff --git a/app/api/signup/route.ts b/app/api/signup/route.ts new file mode 100644 index 0000000..b670c67 --- /dev/null +++ b/app/api/signup/route.ts @@ -0,0 +1,28 @@ +import { PrismaClient } from '@prisma/client'; +import type { NextApiRequest, NextApiResponse } from 'next'; + +const prisma = new PrismaClient(); + +export default async function handler( + req: NextApiRequest, + res: NextApiResponse +) { + if (req.method === 'POST') { + const { email } = req.body; + try { + const user = await prisma.user.create({ + data: { + email + } + }); + return res.status(200).json(user); + } catch (error) { + console.error('Failed to create user:', error); + return res.status(500).json({ error: 'Failed to create user' }); + } + } else { + // Handle any other HTTP method + res.setHeader('Allow', ['POST']); + res.status(405).end(`Method ${req.method} Not Allowed`); + } +} diff --git a/middleware.ts b/middleware.ts new file mode 100644 index 0000000..abd428b --- /dev/null +++ b/middleware.ts @@ -0,0 +1,7 @@ +import { withMiddlewareAuthRequired } from '@auth0/nextjs-auth0/edge'; + +export default withMiddlewareAuthRequired(); + +export const config = { + matcher: ['/module/:path*', '/user'] +}; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index f31019b..3b695cb 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -16,7 +16,7 @@ enum ModuleType { model User { id String @id @default(cuid()) - name String + name String? email String @unique deleted Boolean @default(false) createdAt DateTime @default(now())