From 15924544b481a60fe2677b3fe3f98764f5a74d12 Mon Sep 17 00:00:00 2001 From: AdrianoDev Date: Fri, 31 Jul 2026 16:30:53 +0200 Subject: [PATCH] Utenti: creazione su pagina dedicata, come per gli articoli MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L'elenco aveva il modulo di creazione appiccicato sopra la tabella: ora c'è il pulsante "+ Nuovo utente" che porta a /admin/users/new, dove il modulo ha spazio per etichette vere e per spiegare cosa comporta ogni ruolo. A creazione avvenuta si torna all'elenco. Nel menu la voce "Sito" diventa "Vai a sito", più esplicita sul fatto che porta fuori dal pannello. Co-Authored-By: Claude Opus 5 (1M context) --- src/layouts/Admin.astro | 12 +++++-- src/pages/admin/users.astro | 32 +----------------- src/pages/admin/users/new.astro | 58 +++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 33 deletions(-) create mode 100644 src/pages/admin/users/new.astro diff --git a/src/layouts/Admin.astro b/src/layouts/Admin.astro index d1631c3..2292faa 100644 --- a/src/layouts/Admin.astro +++ b/src/layouts/Admin.astro @@ -45,7 +45,7 @@ const attiva = (v: { href: string; exact?: boolean }) => {VOCI.filter((v) => v.visibile).map((v) => ( {v.label} ))} - Sito + Vai a sito Esci )} @@ -123,7 +123,15 @@ const attiva = (v: { href: string; exact?: boolean }) => } .pill--draft { background: rgba(192,138,62,.18); color: #96682a; } - .aform { max-width: 380px; background: #fff; border: 1px solid #e4dfd7; padding: 26px 24px; } + .aform { max-width: 420px; background: #fff; border: 1px solid #e4dfd7; padding: 26px 24px; } + .alabel { + display: block; margin-bottom: 6px; font-family: var(--font-heading); font-size: .68rem; + font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--c-text-light); + } + .ahint { margin: -8px 0 16px; font-size: .78rem; color: var(--c-text-light); } + .aactions { display: flex; align-items: center; gap: 10px; margin-top: 4px; } + .abtn--ghost { background: none; color: var(--c-heading); border-color: #ddd6cb; } + .abtn--ghost:hover { background: none; border-color: var(--c-accent); color: var(--c-accent-dark); } .form-msg { font-size: .88rem; margin-top: 8px; } .form-msg--ok { color: #5f7c5a; } diff --git a/src/pages/admin/users.astro b/src/pages/admin/users.astro index 72fad87..ae10d04 100644 --- a/src/pages/admin/users.astro +++ b/src/pages/admin/users.astro @@ -9,21 +9,7 @@ const me = Astro.locals.user!;

Utenti

-

Nuovo utente

-
- - - - - -
- -

Elenco

+

+ Nuovo utente

@@ -53,22 +39,6 @@ const me = Astro.locals.user!; el.className = 'form-msg ' + (ok ? 'form-msg--ok' : 'form-msg--err'); }; - document.getElementById('new-user')!.addEventListener('submit', async (e) => { - e.preventDefault(); - const f = e.target as HTMLFormElement; - const body = { - username: (f.elements.namedItem('username') as HTMLInputElement).value, - password: (f.elements.namedItem('password') as HTMLInputElement).value, - role: (f.elements.namedItem('role') as HTMLSelectElement).value, - }; - const res = await fetch('/api/admin/users', { - method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body), - }); - const msg = document.getElementById('new-msg') as HTMLElement; - if (res.ok) { show(msg, 'Creato ✓', true); setTimeout(() => location.reload(), 600); } - else show(msg, (await res.json()).error ?? 'Errore'); - }); - document.querySelectorAll('.role-sel').forEach((sel) => sel.addEventListener('change', async () => { const res = await fetch(`/api/admin/users/${sel.dataset.id}/role`, { diff --git a/src/pages/admin/users/new.astro b/src/pages/admin/users/new.astro new file mode 100644 index 0000000..92d32bb --- /dev/null +++ b/src/pages/admin/users/new.astro @@ -0,0 +1,58 @@ +--- +// Creazione di un utente, su pagina propria come per gli articoli: l'elenco resta pulito e +// il modulo ha spazio per le sue spiegazioni. +import Admin from '../../../layouts/Admin.astro'; +export const prerender = false; +--- + +

Nuovo utente

+ +
+ + + + + +

Almeno 8 caratteri. Resta in chiaro qui: copiala e consegnala alla persona.

+ + + + +
+ + Annulla +
+ + +
+ +
UtenteRuolo