feat(01-02): configure NextAuth.js v4 with credentials provider and JWT
- Install next-auth@4, bcryptjs, @types/bcryptjs, @types/jest - src/types/next-auth.d.ts: extend Session/JWT with tenantId, roles, isSuperAdmin - src/lib/auth-options.ts: CredentialsProvider + JWT/session callbacks, 24h maxAge - src/lib/auth.ts: getServerSession() and getCurrentUser() server helpers - src/app/api/auth/[...nextauth]/route.ts: NextAuth GET/POST handler - src/middleware.ts: withAuth middleware protecting all routes except /login /signup /api/auth/*
This commit is contained in:
39
src/types/next-auth.d.ts
vendored
Normal file
39
src/types/next-auth.d.ts
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
import { Role } from "@prisma/client";
|
||||
import "next-auth";
|
||||
import "next-auth/jwt";
|
||||
|
||||
declare module "next-auth" {
|
||||
interface Session {
|
||||
user: {
|
||||
id: string;
|
||||
email: string;
|
||||
tenantId: string | null;
|
||||
roles: Role[];
|
||||
isSuperAdmin: boolean;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface User {
|
||||
id: string;
|
||||
email: string;
|
||||
tenantId: string | null;
|
||||
roles: Role[];
|
||||
isSuperAdmin: boolean;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
}
|
||||
|
||||
declare module "next-auth/jwt" {
|
||||
interface JWT {
|
||||
id: string;
|
||||
email: string;
|
||||
tenantId: string | null;
|
||||
roles: Role[];
|
||||
isSuperAdmin: boolean;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user