feat: roles, permissions, grille full-width, SSO display name
- Admin/roles : tableau des roles avec edition par role (/admin/role/<nom>) - Permissions par role : cases a cocher groupees (Articles, Acces & lecture) - Nouvelles capacites : propose/validate/publish articles (own/all), view_previews - Nom technique auto-genere depuis le label (JS + fallback serveur) - Blocage suppression du dernier administrateur - user_capabilities table ajoutee en DB - Navbar : dropdown unique (nom + Mon identite + Administration + Deconnexion) - SSO callback : preserve le nom personnalise, ne l ecrase plus a la connexion - Grille articles : CSS Grid auto-fill full-width, hauteur uniforme par ligne - CSP : add_files.js et post_confirm.js externalises
This commit is contained in:
+30
-12
@@ -119,22 +119,40 @@ function hasRole(string $role): bool
|
||||
|
||||
// Capacités connues — clé => label affiché dans l'admin
|
||||
const KNOWN_CAPABILITIES = [
|
||||
'view_sources_own' => 'Voir les sources de ses propres articles',
|
||||
'view_sources_all' => 'Voir les sources de tous les articles',
|
||||
'view_drafts_own' => 'Voir ses articles non publiés',
|
||||
'view_drafts_all' => 'Voir tous les articles non publiés',
|
||||
'edit_articles_own' => 'Modifier ses propres articles',
|
||||
'edit_articles_all' => 'Modifier tous les articles',
|
||||
'rate_articles' => 'Noter des articles',
|
||||
'propose_articles' => 'Proposer des articles',
|
||||
'validate_articles_all' => 'Valider des articles',
|
||||
'validate_articles_own' => 'Valider ses articles uniquement',
|
||||
'publish_articles_all' => 'Publier des articles',
|
||||
'publish_articles_own' => 'Publier ses articles uniquement',
|
||||
'edit_articles_all' => 'Modifier des articles',
|
||||
'edit_articles_own' => 'Modifier ses articles uniquement',
|
||||
'rate_articles' => 'Noter des articles',
|
||||
'view_previews' => 'Lire des avant-premières',
|
||||
'view_drafts_all' => 'Voir tous les brouillons',
|
||||
'view_drafts_own' => 'Voir ses brouillons',
|
||||
'view_sources_all' => 'Voir les sources (tous les articles)',
|
||||
'view_sources_own' => 'Voir les sources de ses articles',
|
||||
];
|
||||
|
||||
// Groupes pour l'interface d'administration
|
||||
// 'single' => pas de variante own/all
|
||||
const CAPABILITY_GROUPS = [
|
||||
['label' => 'Sources & métadonnées', 'own' => 'view_sources_own', 'all' => 'view_sources_all'],
|
||||
['label' => 'Articles non publiés', 'own' => 'view_drafts_own', 'all' => 'view_drafts_all'],
|
||||
['label' => 'Modification', 'own' => 'edit_articles_own', 'all' => 'edit_articles_all'],
|
||||
['label' => 'Noter des articles', 'single' => 'rate_articles'],
|
||||
'Articles' => [
|
||||
'propose_articles',
|
||||
'validate_articles_all',
|
||||
'validate_articles_own',
|
||||
'publish_articles_all',
|
||||
'publish_articles_own',
|
||||
'edit_articles_all',
|
||||
'edit_articles_own',
|
||||
],
|
||||
'Accès & lecture' => [
|
||||
'rate_articles',
|
||||
'view_previews',
|
||||
'view_drafts_all',
|
||||
'view_drafts_own',
|
||||
'view_sources_all',
|
||||
'view_sources_own',
|
||||
],
|
||||
];
|
||||
|
||||
function currentUserCapabilities(): array
|
||||
|
||||
Reference in New Issue
Block a user