NeahFront9/app/api/auth/[...nextauth]/route.ts

57 lines
1.4 KiB
TypeScript

import NextAuth from "next-auth";
import { authOptions } from "@/lib/auth";
const handler = NextAuth({
...authOptions,
debug: true, // Enable debug logging
callbacks: {
...authOptions.callbacks,
async redirect({ url, baseUrl }) {
console.log('Redirect callback:', { url, baseUrl });
// Allows relative callback URLs
if (url.startsWith("/")) return `${baseUrl}${url}`;
// Allows callback URLs on the same origin
else if (new URL(url).origin === baseUrl) return url;
return baseUrl;
},
async session({ session, token }) {
console.log('Session callback:', {
sessionBefore: session,
token: { ...token, refreshToken: '[REDACTED]' }
});
if (token.error) {
console.error('Token error:', token.error);
throw new Error('RefreshAccessTokenError');
}
session.user.id = token.id;
session.user.email = token.email;
session.user.name = token.name;
session.user.role = token.role;
console.log('Session after:', {
sessionAfter: { ...session, user: { ...session.user, id: '[REDACTED]' } }
});
return session;
},
},
});
export { handler as GET, handler as POST };
interface JWT {
accessToken: string;
refreshToken: string;
accessTokenExpires: number;
}
interface Profile {
sub?: string;
email?: string;
name?: string;
roles?: string[];
}