feat(小宝预警): 增加权限与数据键

This commit is contained in:
Script Generator
2026-06-29 17:13:54 +08:00
parent 5a41904ba6
commit 46a002f817
6 changed files with 79 additions and 5 deletions

View File

@@ -10,6 +10,7 @@ import {
sanitizeSystemAdminPatch,
} from '@/lib/member-system';
import { DEFAULT_ROLE_PERMISSIONS } from '@/lib/permissions';
import { mergePresetRolePermissions } from '@/lib/role-permission-migration';
import { loadServerData, saveServerData } from '@/lib/server-data';
const PRESET_DEPARTMENTS: Department[] = [
@@ -81,13 +82,16 @@ export const useMemberStore = create<MemberState>((set, get) => ({
}
return r;
});
const permissionMerged = mergePresetRolePermissions(migratedRoles);
const rolesWithNewDefaults = permissionMerged.roles;
const adminRole = PRESET_ROLES.find((r) => r.id === SYSTEM_ADMIN_ROLE_ID)!;
const roles = migratedRoles.some((r) => r.id === SYSTEM_ADMIN_ROLE_ID)
? migratedRoles.map((r) => r.id === SYSTEM_ADMIN_ROLE_ID ? { ...adminRole, ...r, isSystem: true, permissions: DEFAULT_ROLE_PERMISSIONS[SYSTEM_ADMIN_ROLE_ID] } : r)
: [adminRole, ...migratedRoles];
const roles = rolesWithNewDefaults.some((r) => r.id === SYSTEM_ADMIN_ROLE_ID)
? rolesWithNewDefaults.map((r) => r.id === SYSTEM_ADMIN_ROLE_ID ? { ...adminRole, ...r, isSystem: true, permissions: DEFAULT_ROLE_PERMISSIONS[SYSTEM_ADMIN_ROLE_ID] } : r)
: [adminRole, ...rolesWithNewDefaults];
const rolesChanged =
roles.length !== migratedRoles.length ||
roles.some((role, index) => JSON.stringify(role) !== JSON.stringify(migratedRoles[index]));
permissionMerged.changed ||
roles.length !== rolesWithNewDefaults.length ||
roles.some((role, index) => JSON.stringify(role) !== JSON.stringify(rolesWithNewDefaults[index]));
const ensured = ensureSystemAdminMember(cached.members);
const next = {
departments: cached.departments,