fix(data): 清理旧数据并保护服务端写入

This commit is contained in:
Script Generator
2026-07-02 09:30:50 +08:00
parent 28e0c6de19
commit 916bd17a48
38 changed files with 1346 additions and 194 deletions

View File

@@ -3,16 +3,17 @@ import type { Member } from './members';
export const SYSTEM_ADMIN_MEMBER_ID = 'm-8';
export const SYSTEM_ADMIN_MEMBER_NAME = '超级管理员';
export const SYSTEM_ADMIN_ROLE_ID = 'role-admin';
export const SYSTEM_ADMIN_DEPARTMENT_ID = 'dept-1';
export const SYSTEM_ADMIN_DEPARTMENT_ID = '';
const LEGACY_SYSTEM_ADMIN_NAMES = ['陈十'];
export const SYSTEM_ADMIN_MEMBER: Member = {
id: SYSTEM_ADMIN_MEMBER_ID,
name: SYSTEM_ADMIN_MEMBER_NAME,
username: 'admin',
departmentId: SYSTEM_ADMIN_DEPARTMENT_ID,
roleId: SYSTEM_ADMIN_ROLE_ID,
phone: '13200132008',
email: 'admin@company.com',
email: '',
password: 'Ftb@2024',
createdAt: '2024-01-01',
isSystem: true,
@@ -24,10 +25,11 @@ function normalizeSystemAdminMember(member: Partial<Member>): Member {
...member,
id: SYSTEM_ADMIN_MEMBER_ID,
name: SYSTEM_ADMIN_MEMBER_NAME,
username: SYSTEM_ADMIN_MEMBER.username,
departmentId: SYSTEM_ADMIN_DEPARTMENT_ID,
roleId: SYSTEM_ADMIN_ROLE_ID,
phone: member.phone || SYSTEM_ADMIN_MEMBER.phone,
email: member.email || SYSTEM_ADMIN_MEMBER.email,
email: SYSTEM_ADMIN_MEMBER.email,
password: member.password || SYSTEM_ADMIN_MEMBER.password,
createdAt: member.createdAt || SYSTEM_ADMIN_MEMBER.createdAt,
isSystem: true,
@@ -43,7 +45,9 @@ export function ensureSystemAdminMember(members: Member[]): { members: Member[];
const current = members[index];
const normalized = normalizeSystemAdminMember(current);
const changed =
index !== 0 ||
current.name !== normalized.name ||
current.username !== normalized.username ||
current.departmentId !== normalized.departmentId ||
current.roleId !== normalized.roleId ||
current.phone !== normalized.phone ||
@@ -55,14 +59,14 @@ export function ensureSystemAdminMember(members: Member[]): { members: Member[];
if (!changed) return { members, changed: false };
return {
members: members.map((m, i) => (i === index ? normalized : m)),
members: [normalized, ...members.filter((_, i) => i !== index)],
changed: true,
};
}
export function sanitizeSystemAdminPatch(id: string, data: Partial<Member>): Partial<Member> {
if (id !== SYSTEM_ADMIN_MEMBER_ID) return data;
const { name, departmentId, roleId, isSystem, ...allowed } = data;
const { name, username, departmentId, roleId, email, isSystem, ...allowed } = data;
return { ...allowed, isSystem: true };
}