import { NextAuthOptions, User } from 'next-auth'; import CredentialsProvider from 'next-auth/providers/credentials'; import { JWT } from 'next-auth/jwt'; export const authOptions: NextAuthOptions = { providers: [ CredentialsProvider({ name: 'Credentials', credentials: { email: { label: 'Email', type: 'email' }, password: { label: 'Password', type: 'password' } }, async authorize(credentials) { if (!credentials?.email || !credentials?.password) { return null; } // TODO: Implement actual authentication logic // For now, generate a unique ID based on email const userId = Buffer.from(credentials.email).toString('base64'); return { id: userId, email: credentials.email, name: credentials.email.split('@')[0], first_name: credentials.email.split('@')[0], last_name: '', username: credentials.email, role: ['user'] } satisfies User; } }) ], session: { strategy: 'jwt', maxAge: 30 * 24 * 60 * 60, // 30 days }, jwt: { maxAge: 30 * 24 * 60 * 60, // 30 days }, secret: process.env.NEXTAUTH_SECRET, pages: { signIn: '/courrier/login', }, callbacks: { async jwt({ token, user }) { if (user) { token.id = user.id; token.email = user.email; token.first_name = user.first_name; token.last_name = user.last_name; token.username = user.username; token.role = user.role; } return token; }, async session({ session, token }) { if (token) { session.user.id = token.id as string; session.user.email = token.email as string; session.user.first_name = token.first_name as string; session.user.last_name = token.last_name as string; session.user.username = token.username as string; session.user.role = token.role as string[]; } return session; } } };