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;
}
}export const authOptions: NextAuthOptions = {
callbacks: {
session: ({ session, user }) => ({
...session,
user: {
...session.user,
id: user.id,
role: user.role,
},
}),
},
adapter: DrizzleAdapter(db, createTable) as Adapter,const session = await getServerAuthSession();
console.log({ sessionUser: session.user });{
sessionUser: {
name: 'name',
email: 'name@gmail.com',
image: null,
id: 'uuid',
role: undefined
}
}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 });
{
user: {
id: 'uuid',
name: 'name',
email: 'name@gmail.com',
emailVerified: null,
image: null,
role: 'admin'
}
}