@@ -0,0 +1,69 @@
|
||||
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,
|
||||
),
|
||||
})),
|
||||
}));
|
||||
Reference in New Issue
Block a user