diff --git a/src/layouts/Admin.astro b/src/layouts/Admin.astro index d76e45e..d1631c3 100644 --- a/src/layouts/Admin.astro +++ b/src/layouts/Admin.astro @@ -1,7 +1,28 @@ --- +// Layout dell'area riservata. Usa i token e i font del sito, come il Campus e Stress Index: +// il pannello non è più un foglio di stile a sé, così chi passa dal sito all'amministrazione +// resta nello stesso mondo visivo. +import '@fontsource/montserrat/400.css'; +import '@fontsource/montserrat/500.css'; +import '@fontsource/montserrat/600.css'; +import '@fontsource/open-sans/400.css'; +import '@fontsource/open-sans/600.css'; +import '../styles/global.css'; + interface Props { title: string } const { title } = Astro.props; const user = Astro.locals.user; +const path = Astro.url.pathname; +const isManager = user?.role === 'superuser' || user?.role === 'admin'; + +// Voci del menu: ognuna compare solo a chi può davvero aprirla. +const VOCI = [ + { href: '/admin', label: 'Articoli', visibile: true, exact: true }, + { href: '/admin/content', label: 'Contenuti', visibile: isManager }, + { href: '/admin/users', label: 'Utenti', visibile: user?.role === 'admin' }, +]; +const attiva = (v: { href: string; exact?: boolean }) => + v.exact ? path === v.href : path.startsWith(v.href); --- @@ -10,41 +31,110 @@ const user = Astro.locals.user; {title} — Admin InsanityLab - + - -
- InsanityLab · Admin - - {user && ( - <> - {`Ciao, ${user.username}`} - Articoli - {(user.role === 'superuser' || user.role === 'admin') && Contenuti} - {user.role === 'admin' && Utenti} - {user.role === 'admin' && Piattaforme} - Nuovo - Esci - Vedi sito ↗ - - )} - -
-
+ +
+ + InsanityLab + Area riservata + + + {user && ( + + )} + + {user &&

{user.username}

} +
+ +
+ + diff --git a/src/pages/admin/content.astro b/src/pages/admin/content.astro index 41ded06..1dd0d88 100644 --- a/src/pages/admin/content.astro +++ b/src/pages/admin/content.astro @@ -109,22 +109,26 @@ const allStyles = STYLE_GROUPS as Record;