Files
HellreigN/frontend/src/modules/admin/store/useAdminStore.ts
T
nikita 3430070df8
ci-front / build (push) Successful in 2m11s
feat: adminka
2026-04-04 18:13:54 +03:00

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,
),
})),
}));