Cannot get user role

I'm using Next.js with next auth and the drizzle adapter. I must be doing something wrong because the session users role is undefined.

Interface from T3 to type the session object.
export type UserRole = "user" | "admin"; declare module "next-auth" { interface Session extends DefaultSession { user: { id: string; // ...other properties role: UserRole; } & DefaultSession["user"]; } interface User { // ...other properties role: UserRole; } }

My callback:
export const authOptions: NextAuthOptions = { callbacks: { session: ({ session, user }) => ({ ...session, user: { ...session.user, id: user.id, role: user.role, }, }), }, adapter: DrizzleAdapter(db, createTable) as Adapter,

Getting the user:
const session = await getServerAuthSession(); console.log({ sessionUser: session.user });

Output:
{ sessionUser: { name: 'name', email: 'name@gmail.com', image: null, id: 'uuid', role: undefined } }

Just to make sure the db has user role (same as in the adapter):
export const getUser = async (id: string) => { return await db .select() .from(users) .where(eq(users.id, id)) .then((res) => res[0] ?? null); }; const user = await getUser(session.user.id); console.log({ user });

Output:
{ user: { id: 'uuid', name: 'name', email: 'name@gmail.com', emailVerified: null, image: null, role: 'admin' } }

What did i do wrong? Thanks for any help!
Was this page helpful?