70 lines
1.6 KiB
TypeScript
70 lines
1.6 KiB
TypeScript
import { create } from "zustand";
|
|
import type { AdminUser, PermissionKey } from "../types";
|
|
|
|
const mockUsers: AdminUser[] = [
|
|
{
|
|
id: "1",
|
|
login: "admin",
|
|
name: "Иван",
|
|
last_name: "Петров",
|
|
is_active: true,
|
|
permission_admin: true,
|
|
permission_manage_agent: true,
|
|
permission_view: true,
|
|
},
|
|
{
|
|
id: "2",
|
|
login: "operator",
|
|
name: "Анна",
|
|
last_name: "Сидорова",
|
|
is_active: true,
|
|
permission_admin: false,
|
|
permission_manage_agent: true,
|
|
permission_view: true,
|
|
},
|
|
{
|
|
id: "3",
|
|
login: "viewer",
|
|
name: "Сергей",
|
|
last_name: "Козлов",
|
|
is_active: true,
|
|
permission_admin: false,
|
|
permission_manage_agent: false,
|
|
permission_view: true,
|
|
},
|
|
{
|
|
id: "4",
|
|
login: "dev_user",
|
|
name: "Мария",
|
|
last_name: "Новикова",
|
|
is_active: false,
|
|
permission_admin: false,
|
|
permission_manage_agent: true,
|
|
permission_view: true,
|
|
},
|
|
];
|
|
|
|
interface AdminState {
|
|
users: AdminUser[];
|
|
toggleActive: (id: string) => void;
|
|
togglePermission: (id: string, permission: PermissionKey) => void;
|
|
}
|
|
|
|
export const useAdminStore = create<AdminState>((set) => ({
|
|
users: mockUsers,
|
|
|
|
toggleActive: (id: string) =>
|
|
set((state) => ({
|
|
users: state.users.map((u) =>
|
|
u.id === id ? { ...u, is_active: !u.is_active } : u,
|
|
),
|
|
})),
|
|
|
|
togglePermission: (id: string, permission: PermissionKey) =>
|
|
set((state) => ({
|
|
users: state.users.map((u) =>
|
|
u.id === id ? { ...u, [permission]: !u[permission] } : u,
|
|
),
|
|
})),
|
|
}));
|