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 - - - - - user - superuser - piattaforme - admin - - Crea - - - - Elenco + + Nuovo utente UtenteRuolo @@ -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 + + + Nome utente + + + Password + + Almeno 8 caratteri. Resta in chiaro qui: copiala e consegnala alla persona. + + Ruolo + + user — scrive i propri articoli + superuser — articoli e contenuti del sito + piattaforme — solo Campus e Stress Index + admin — accesso completo + + + + Crea utente + Annulla + + + + + +
+ Nuovo utente
Almeno 8 caratteri. Resta in chiaro qui: copiala e consegnala alla persona.