Add admin user rename
This commit is contained in:
@@ -53,6 +53,7 @@ async function loadUsers() {
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex;gap:8px;align-items:center;">
|
||||
<button class="admin-btn-sm" data-adm-rename-user="${esc(u.username)}" style="font-size:11px;">Rename</button>
|
||||
${u.is_admin ? '' : `<button class="admin-btn-delete" data-adm-del-user="${esc(u.username)}" style="font-size:11px;">Remove</button>`}
|
||||
${u.is_admin ? '' : '<svg class="admin-user-chevron" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="opacity:0.3;transition:transform 0.2s,opacity 0.2s;"><polyline points="6 9 12 15 18 9"/></svg>'}
|
||||
</div>
|
||||
@@ -106,7 +107,7 @@ async function loadUsers() {
|
||||
// Toggle panel visibility + rotate chevron + load models
|
||||
let _modelsLoaded = false;
|
||||
header.addEventListener('click', (e) => {
|
||||
if (e.target.closest('.admin-btn-delete')) return;
|
||||
if (e.target.closest('.admin-btn-delete, [data-adm-rename-user]')) return;
|
||||
privPanel.classList.toggle('hidden');
|
||||
const chevron = header.querySelector('.admin-user-chevron');
|
||||
if (chevron) {
|
||||
@@ -143,6 +144,42 @@ async function loadUsers() {
|
||||
});
|
||||
}
|
||||
|
||||
// Rename button
|
||||
const renameBtn = row.querySelector('[data-adm-rename-user]');
|
||||
if (renameBtn) {
|
||||
renameBtn.addEventListener('click', async (e) => {
|
||||
e.stopPropagation();
|
||||
const oldUsername = renameBtn.dataset.admRenameUser;
|
||||
const next = await uiModule.styledPrompt(`Rename "${oldUsername}"`, {
|
||||
defaultValue: oldUsername,
|
||||
placeholder: 'New username',
|
||||
confirmText: 'Rename',
|
||||
});
|
||||
const username = (next || '').trim();
|
||||
if (!username || username === oldUsername) return;
|
||||
try {
|
||||
const res = await fetch(`/api/auth/users/${encodeURIComponent(oldUsername)}/rename`, {
|
||||
method: 'PUT',
|
||||
credentials: 'same-origin',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ username }),
|
||||
});
|
||||
const data = await res.json().catch(() => ({}));
|
||||
if (!res.ok) {
|
||||
uiModule.showError(data.detail || 'Failed to rename user');
|
||||
return;
|
||||
}
|
||||
if (data.renamed_self) {
|
||||
window.location.reload();
|
||||
return;
|
||||
}
|
||||
loadUsers();
|
||||
} catch (err) {
|
||||
uiModule.showError('Failed to rename user');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Delete button
|
||||
const delBtn = row.querySelector('[data-adm-del-user]');
|
||||
if (delBtn) {
|
||||
|
||||
Reference in New Issue
Block a user