diff --git a/src/app/admin/users/page.tsx b/src/app/admin/users/page.tsx
index 9a94997..691081e 100644
--- a/src/app/admin/users/page.tsx
+++ b/src/app/admin/users/page.tsx
@@ -24,6 +24,14 @@ export default function UsersPage() {
const [newRole, setNewRole] = useState('PLAYER');
const [error, setError] = useState('');
+ // Reset password modal
+ const [resetModal, setResetModal] = useState(false);
+ const [resetUserId, setResetUserId] = useState('');
+ const [resetUserName, setResetUserName] = useState('');
+ const [resetPassword, setResetPassword] = useState('');
+ const [resetError, setResetError] = useState('');
+ const [resetLoading, setResetLoading] = useState(false);
+
const fetchUsers = () => {
fetch('/api/users')
.then((res) => res.json())
@@ -74,6 +82,40 @@ export default function UsersPage() {
fetchUsers();
};
+ const openResetModal = (user: User) => {
+ setResetUserId(user.id);
+ setResetUserName(user.name);
+ setResetPassword('');
+ setResetError('');
+ setResetModal(true);
+ };
+
+ const handleResetPassword = async () => {
+ setResetError('');
+ if (resetPassword.length < 8) {
+ setResetError('Password must be at least 8 characters');
+ return;
+ }
+ setResetLoading(true);
+ try {
+ const res = await fetch(`/api/users/${resetUserId}`, {
+ method: 'PATCH',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ password: resetPassword }),
+ });
+ const data = await res.json();
+ if (!res.ok) {
+ setResetError(data.error || 'Failed to reset password');
+ } else {
+ setResetModal(false);
+ }
+ } catch {
+ setResetError('Failed to reset password');
+ } finally {
+ setResetLoading(false);
+ }
+ };
+
const handleDelete = async (userId: string) => {
if (!confirm('Are you sure you want to delete this user?')) return;
await fetch(`/api/users/${userId}`, { method: 'DELETE' });
@@ -121,7 +163,13 @@ export default function UsersPage() {
{new Date(user.createdAt).toLocaleDateString()}
|
-
+ |
+
|