diff --git a/src/layouts/Admin.astro b/src/layouts/Admin.astro index e61622f..ab98680 100644 --- a/src/layouts/Admin.astro +++ b/src/layouts/Admin.astro @@ -31,8 +31,17 @@ const user = Astro.locals.user;
InsanityLab · Admin - {user && user.role === 'editor' && <>{`Ciao, ${user.username}`} Contenuti Esci} - {user && user.role !== 'editor' && <>{`Ciao, ${user.username}`} Articoli Contenuti Nuovo Esci Vedi sito ↗} + {user && ( + <> + {`Ciao, ${user.username}`} + Articoli + {(user.role === 'superuser' || user.role === 'admin') && Contenuti} + {user.role === 'admin' && Utenti} + Nuovo + Esci + Vedi sito ↗ + + )}
diff --git a/src/pages/admin/index.astro b/src/pages/admin/index.astro index a8e0cd3..24cb0ca 100644 --- a/src/pages/admin/index.astro +++ b/src/pages/admin/index.astro @@ -1,21 +1,26 @@ --- import Admin from '../../layouts/Admin.astro'; import { getDb } from '../../lib/db'; -import { listAllPosts } from '../../lib/posts'; +import { listAllPosts, listByAuthor } from '../../lib/posts'; +import { listUsers } from '../../lib/auth'; export const prerender = false; -const posts = listAllPosts(getDb()); +const user = Astro.locals.user!; +const isManager = user.role === 'superuser' || user.role === 'admin'; +const posts = isManager ? listAllPosts(getDb()) : listByAuthor(getDb(), user.id); +const nameById = new Map(listUsers(getDb()).map((u) => [u.id, u.username])); const fmt = new Intl.DateTimeFormat('it-IT', { dateStyle: 'short', timeStyle: 'short' }); ---

Articoli

+ Nuovo articolo

- + {isManager && } {posts.map((p) => ( + {isManager && }
TitoloCategoriaStatoAggiornato
TitoloCategoriaAutoreStatoAggiornato
{p.title} {p.category}{p.author_id ? (nameById.get(p.author_id) ?? 'Staff InsanityLab') : 'Staff InsanityLab'}{p.draft ? 'Bozza' : 'Pubblicato'} {fmt.format(new Date(p.updated_at.replace(' ', 'T') + 'Z'))}