function showCreateUserModal() { document.getElementById('modalTitle').textContent = 'Create User'; document.getElementById('userId').value = ''; document.getElementById('modalUsername').value = ''; document.getElementById('modalEmail').value = ''; document.getElementById('modalPassword').value = ''; document.getElementById('modalPassword').required = true; document.getElementById('passwordHint').style.display = 'block'; document.getElementById('modalRole').value = 'admin'; document.getElementById('modalActive').checked = true; document.getElementById('saveUserBtn').textContent = 'Create'; document.getElementById('userModal').style.display = 'flex'; } function editUser(id, username, email, role, isActive) { document.getElementById('modalTitle').textContent = 'Edit User'; document.getElementById('userId').value = id; document.getElementById('modalUsername').value = username; document.getElementById('modalEmail').value = email; document.getElementById('modalPassword').value = ''; document.getElementById('modalPassword').required = false; document.getElementById('passwordHint').style.display = 'none'; document.getElementById('modalRole').value = role; document.getElementById('modalActive').checked = !!isActive; document.getElementById('saveUserBtn').textContent = 'Update'; document.getElementById('userModal').style.display = 'flex'; } function closeModal() { document.getElementById('userModal').style.display = 'none'; } function saveUser() { const id = document.getElementById('userId').value; const formData = new FormData(document.getElementById('userForm')); const isEdit = !!id; const url = isEdit ? '/admin/users/' + id + '/update' : '/admin/users/create'; fetch(url, { method: 'POST', headers: { 'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]')?.content || '', }, body: new URLSearchParams(formData), }) .then(r => r.json()) .then(data => { if (data.success) { showToast('success', data.message); setTimeout(() => location.reload(), 1000); } else { showToast('error', data.message); } closeModal(); }) .catch(err => showToast('error', 'Failed to save user')); } function deleteUser(id, username) { if (!confirm('Are you sure you want to delete user "' + username + '"?')) return; fetch('/admin/users/' + id + '/delete', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]')?.content || '', }, body: '_csrf_token=' + encodeURIComponent(document.querySelector('meta[name="csrf-token"]')?.content || ''), }) .then(r => r.json()) .then(data => { if (data.success) location.reload(); else showToast('error', data.message); }); }