diff --git a/frontend/src/components/modals/user/EditUserModal.jsx b/frontend/src/components/modals/user/EditUserModal.jsx
new file mode 100644
index 0000000..0c84bd5
--- /dev/null
+++ b/frontend/src/components/modals/user/EditUserModal.jsx
@@ -0,0 +1,105 @@
+import React, { useState, useEffect } from 'react';
+import {
+ Modal,
+ Stack,
+ TextInput,
+ Select,
+ Button,
+ Group,
+ PasswordInput,
+ Text,
+} from '@mantine/core';
+
+const EditUserModal = ({ opened, onClose, onEditUser, loading, user }) => {
+ const [formData, setFormData] = useState({
+ email: '',
+ displayName: '',
+ role: '',
+ password: '',
+ });
+
+ useEffect(() => {
+ if (user) {
+ setFormData({
+ email: user.email,
+ displayName: user.displayName || '',
+ role: user.role,
+ password: '',
+ });
+ }
+ }, [user]);
+
+ const handleSubmit = async () => {
+ const updateData = {
+ ...formData,
+ ...(formData.password ? { password: formData.password } : {}),
+ };
+
+ const result = await onEditUser(user.id, updateData);
+ if (result.success) {
+ setFormData({
+ email: '',
+ displayName: '',
+ role: '',
+ password: '',
+ });
+ onClose();
+ }
+ };
+
+ return (
+
+
+
+ setFormData({ ...formData, email: e.currentTarget.value })
+ }
+ placeholder="user@example.com"
+ />
+
+ setFormData({ ...formData, displayName: e.currentTarget.value })
+ }
+ placeholder="John Doe"
+ />
+
+
+ );
+};
+
+export default EditUserModal;
diff --git a/frontend/src/components/settings/admin/AdminUsersTab.jsx b/frontend/src/components/settings/admin/AdminUsersTab.jsx
index 0960058..a5df0bb 100644
--- a/frontend/src/components/settings/admin/AdminUsersTab.jsx
+++ b/frontend/src/components/settings/admin/AdminUsersTab.jsx
@@ -18,6 +18,7 @@ import {
import { notifications } from '@mantine/notifications';
import { useAdmin } from '../../../hooks/useAdmin';
import CreateUserModal from '../../modals/user/CreateUserModal';
+import EditUserModal from '../../modals/user/EditUserModal';
import DeleteUserModal from '../../modals/user/DeleteUserModal';
const AdminUsersTab = ({ currentUser }) => {
@@ -26,15 +27,22 @@ const AdminUsersTab = ({ currentUser }) => {
loading,
error,
create,
+ update,
delete: deleteUser,
} = useAdmin('users');
+
const [createModalOpened, setCreateModalOpened] = useState(false);
+ const [editModalData, setEditModalData] = useState(null);
const [deleteModalData, setDeleteModalData] = useState(null);
const handleCreateUser = async (userData) => {
return await create(userData);
};
+ const handleEditUser = async (id, userData) => {
+ return await update(id, userData);
+ };
+
const handleDeleteClick = (user) => {
if (user.id === currentUser.id) {
notifications.show({
@@ -65,7 +73,11 @@ const AdminUsersTab = ({ currentUser }) => {
{new Date(user.createdAt).toLocaleDateString()}
-
+ setEditModalData(user)}
+ >
{
loading={loading}
/>
+ setEditModalData(null)}
+ onEditUser={handleEditUser}
+ user={editModalData}
+ loading={loading}
+ />
+
setDeleteModalData(null)}