Files
NextEdu/src/next-auth.d.ts
SpecialX 56c3f32e2d chore(config): update auth, env, i18n, proxy, and dependencies
- Update src/auth.ts auth configuration

- Update src/env.mjs environment variable validation

- Update src/i18n/request.ts locale handling

- Update src/proxy.ts middleware

- Update src/next-auth.d.ts type declarations

- Update package.json and package-lock.json dependencies
2026-07-03 10:30:28 +08:00

50 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { DefaultSession } from "next-auth"
import type { Permission, Role } from "@/shared/types/permissions"
declare module "next-auth" {
interface User {
/** 主要角色(向后兼容) */
role?: string
/** 用户拥有的全部角色名 */
roles?: string[]
}
interface Session {
user: DefaultSession["user"] & {
id: string
role: string // kept for backward compatibility
roles: Role[]
permissions: Permission[]
onboarded: boolean
}
}
}
declare module "next-auth/jwt" {
interface JWT {
id: string
role: string // kept for backward compatibility
roles: Role[]
/**
* 权限位图base36 字符串audit-P1-7
*
* 由 `encodePermissionsBitmap()` 编码生成,约 14 字符,
* 相比 `permissions: Permission[]` JSON 数组(~1.1KB)显著减小 JWT 体积。
*
* proxy.ts 边缘运行时直接通过 `hasPermissionInBitmap()` 检查权限,
* 无需解码为完整数组。
*
* Session callback 中通过 `decodePermissionsBitmap()` 还原为 Permission[]
* 供服务端 `getAuthContext()` 和客户端 `usePermission()` 使用。
*/
permissionsBitmap: string
/**
* @deprecated 仅用于向后兼容,新代码应使用 `permissionsBitmap`。
* Session callback 已自动从 bitmap 解码并填充到 `session.user.permissions`
* 业务代码无需直接读取 `token.permissions`。
* 在 JWT 中保留此字段会导致 token 体积膨胀,未来版本将移除。
*/
permissions?: Permission[]
onboarded: boolean
}
}