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:
SpecialX
2026-07-03 10:30:28 +08:00
parent 0e63c24ed9
commit 56c3f32e2d
7 changed files with 755 additions and 199 deletions

27
src/next-auth.d.ts vendored
View File

@@ -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
}
}