Next.js Discord

Discord Forum

Help with next-authv5(beta) and nextjs14

Unanswered
Giant panda posted this in #help-forum
Open in Discord
Giant pandaOP
Im facing an issue with extending user sessions in order to configure role-based routes.

auth.ts:

export const {
handlers: { GET, POST },
auth,
signIn,
signOut,
} = NextAuth({
...authConfig,
callbacks: {
async jwt({ token }) {
if (!token.email) return token;
const existingUser = await getUserByEmail(token.email);
if (!existingUser) return token;
token.sub = existingUser.user_id.toString();
token.username = existingUser.username;
token.email = existingUser.email;
token.role = existingUser.role;
return token;
},
async session({ token, session }) {
if (token.sub && session.user) {
session.user.id = token.sub;
}

if (token.role && session.user) {
session.user.role = token.role as UserRole;
}
if (session.user) {
session.user.username = token.username;
session.user.email = token.email;
}
return session;
},
},
adapter: PrismaAdapter(prisma),
session: { strategy: "jwt" },
});

auth.config.ts:

export default {
pages: {
signIn: "/login",
error: "/auth/error",
},
providers: [
Credentials({
async authorize(credentials) {
const { email } = credentials;
const user = await getUserByEmail(email);
if (user) return user;
return null;
},
}),
],
} satisfies NextAuthConfig;

middelware.ts

const { auth } = NextAuth(authConfig);

export default auth((req) => {
const { nextUrl } = req;
const isLoggedIn = !!req.auth;
return null;
});

export const config = {
matcher: ["/((?!.+\.[\w]+$|_next).)", "/", "/(api|trpc)(.)"],
};
`

req.auth in the middle only include email

0 Replies