From 148001be433d281c5d0bda2e513d54245768054d Mon Sep 17 00:00:00 2001 From: LordMathis Date: Sun, 10 Nov 2024 00:05:32 +0100 Subject: [PATCH] Implement admin edit user --- .../components/modals/user/EditUserModal.jsx | 105 ++++++++++++++++++ .../settings/admin/AdminUsersTab.jsx | 22 +++- 2 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/modals/user/EditUserModal.jsx 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" + /> +