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
This commit is contained in:
27
src/next-auth.d.ts
vendored
27
src/next-auth.d.ts
vendored
@@ -2,6 +2,12 @@ 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
|
||||
@@ -18,7 +24,26 @@ declare module "next-auth/jwt" {
|
||||
id: string
|
||||
role: string // kept for backward compatibility
|
||||
roles: Role[]
|
||||
permissions: Permission[]
|
||||
/**
|
||||
* 权限位图(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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user