import React, { useState, useEffect } from "react"; import SelectionDialog from "../components/SelectionDialog.jsx"; import { useNavigate } from "react-router-dom"; import { getAuthToken } from "../api.jsx"; import { getUsers, createUser, updateUser, deleteUser, getRoles, } from "../api.jsx"; const Users = () => { const [users, setUsers] = useState([]); const [roles, setRoles] = useState([]); const [newUser, setNewUser] = useState({ first_name: "", last_name: "", login: "", password: "", role_id: "", }); const [editingUserId, setEditingUserId] = useState(null); const [error, setError] = useState(null); const [showRoleDialog, setShowRoleDialog] = useState(false); const navigate = useNavigate(); useEffect(() => { fetchUsers(); fetchRoles(); }, []); const fetchUsers = async () => { try { const data = await getUsers(); setUsers(data); } catch (error) { if (error.response && error.response.status === 401) { navigate("/login"); } console.error("Ошибка при загрузке пользователей:", error); } }; const fetchRoles = async () => { try { const data = await getRoles(); setRoles(data); } catch (error) { if (error.response && error.response.status === 401) { navigate("/login"); } console.error("Ошибка при загрузке ролей:", error); } }; const handleInputChange = (e) => { const { name, value } = e.target; setNewUser({ ...newUser, [name]: value }); }; const handleSubmit = async (e) => { e.preventDefault(); if ( !newUser.first_name || !newUser.last_name || !newUser.login || !newUser.password || !newUser.role_id ) { setError("Пожалуйста, заполните все поля."); return; } try { if (editingUserId) { await updateUser(editingUserId, newUser); } else { await createUser(newUser); } fetchUsers(); resetForm(); } catch (error) { console.error( "Ошибка при добавлении или обновлении пользователя:", error ); } }; const handleEdit = (user) => { setNewUser({ first_name: user.first_name, last_name: user.last_name, login: user.login, password: user.password, role_id: user.role_id, role_name: user.role_name, }); setEditingUserId(user.id); }; const handleDelete = async (userId) => { try { await deleteUser(userId); fetchUsers(); } catch (error) { console.error("Ошибка при удалении пользователя:", error); } }; const resetForm = () => { setNewUser({ first_name: "", last_name: "", login: "", password: "", role_id: "", }); setEditingUserId(null); }; const handleDialogSelectRole = (selectedItem) => { setNewUser({ ...newUser, role_id: selectedItem.id, role_name: selectedItem.name, }); setShowRoleDialog(false); }; if (getAuthToken() === null) { navigate("/login"); } return (
| Имя | Фамилия | Логин | Роль | Действия |
|---|---|---|---|---|
| {user.first_name} | {user.last_name} | {user.login} | {user.role_name} |
|