e5eb7c3906
* perf: use getSlimServerSession for session retrieval Creates a new `getSlimServerSession` method and replaces all calls to `getServerSession`. The new method is much faster than `getServerSession` with it not requiring the NextAuth options object which includes a number of additional packages. Additionally introduces a primitive in-memory cache for slim sessions. * fix: account for seconds in token.exp * Reverts diffs * Replaces getServerSession with slimmer version * Update disable.ts --------- Co-authored-by: Peer Richelsen <peeroke@gmail.com> Co-authored-by: Keith Williams <keithwillcode@gmail.com> Co-authored-by: zomars <zomars@me.com>
35 lines
954 B
TypeScript
35 lines
954 B
TypeScript
import type { User as PrismaUser, UserPermissionRole } from "@prisma/client";
|
|
import type { DefaultUser } from "next-auth";
|
|
|
|
declare module "next-auth" {
|
|
/**
|
|
* Returned by `useSession`, `getSession` and received as a prop on the `Provider` React Context
|
|
*/
|
|
interface Session {
|
|
hasValidLicense: boolean;
|
|
user: User;
|
|
}
|
|
|
|
interface User extends Omit<DefaultUser, "id"> {
|
|
id: PrismaUser["id"];
|
|
emailVerified?: PrismaUser["emailVerified"];
|
|
email_verified?: boolean;
|
|
impersonatedByUID?: number;
|
|
belongsToActiveTeam?: boolean;
|
|
username?: PrismaUser["username"];
|
|
role?: PrismaUser["role"] | "INACTIVE_ADMIN";
|
|
}
|
|
}
|
|
|
|
declare module "next-auth/jwt" {
|
|
interface JWT {
|
|
id?: string | number;
|
|
name?: string | null;
|
|
username?: string | null;
|
|
email?: string | null;
|
|
role?: UserPermissionRole | "INACTIVE_ADMIN" | null;
|
|
impersonatedByUID?: number | null;
|
|
belongsToActiveTeam?: boolean;
|
|
}
|
|
}
|