05/24 Enhance functionalities

This commit is contained in:
2026-05-24 22:51:27 -04:00
parent 9e1493eea7
commit cb98c7e222
7 changed files with 233 additions and 6 deletions
+34
View File
@@ -27,6 +27,11 @@
<td class="actions">
<button class="btn btn-ghost btn-sm"
onclick='openEditUser({{ u|tojson }})'>✎ Edit</button>
{% if u.email %}
<button class="btn btn-ghost btn-sm js-send-reset"
data-id="{{ u.id }}" data-username="{{ u.username }}" data-email="{{ u.email }}"
title="Send password reset link to {{ u.email }}">✉ Reset</button>
{% endif %}
<form method="post" action="{{ url_for('admin_users.delete', user_id=u.id) }}"
style="display:inline"
onsubmit="return confirm('Delete user {{ u.username }}?')">
@@ -141,5 +146,34 @@ function openEditUser(u) {
'/admin/users/' + u.id + '/edit';
openModal('modal-edit-user');
}
document.querySelectorAll('.js-send-reset').forEach(function(btn) {
btn.addEventListener('click', function() {
var username = btn.dataset.username;
var email = btn.dataset.email;
if (!confirm('Send a password reset link to ' + username + ' (' + email + ')?')) return;
btn.disabled = true;
btn.textContent = '…';
fetch('/admin/users/' + btn.dataset.id + '/send-reset', {
method: 'POST',
headers: { 'X-CSRFToken': getCsrfToken() },
}).then(function(r) { return r.json(); })
.then(function(d) {
if (d.ok) {
btn.textContent = '✓ Sent';
btn.style.color = 'var(--success, #16a34a)';
} else {
alert('Error: ' + d.error);
btn.disabled = false;
btn.textContent = '✉ Reset';
}
})
.catch(function() {
alert('Request failed. Please try again.');
btn.disabled = false;
btn.textContent = '✉ Reset';
});
});
});
</script>
{% endblock %}