1d2e3d9a24
- 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
72 lines
2.8 KiB
PHP
72 lines
2.8 KiB
PHP
<?php
|
|
ob_start();
|
|
$isAdminRole = ($editRole['name'] === 'admin');
|
|
?>
|
|
|
|
<div class="d-flex align-items-center gap-3 mb-4">
|
|
<a href="/admin/roles" class="btn btn-secondary btn-sm">← Retour</a>
|
|
<h1 class="h4 mb-0">Rôle : <?= htmlspecialchars($editRole['label']) ?></h1>
|
|
<code class="text-muted"><?= htmlspecialchars($editRole['name']) ?></code>
|
|
</div>
|
|
|
|
<form method="POST" action="/admin/role/<?= rawurlencode($editRole['name']) ?>">
|
|
|
|
<div class="row g-4">
|
|
|
|
<!-- Permissions -->
|
|
<div class="col-lg-8">
|
|
|
|
<?php if ($isAdminRole): ?>
|
|
<div class="alert alert-warning">
|
|
Le rôle <code>admin</code> a toutes les permissions implicitement — les cases à cocher sont ignorées.
|
|
</div>
|
|
<?php else: ?>
|
|
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<?php foreach (CAPABILITY_GROUPS as $groupLabel => $groupCaps): ?>
|
|
<div class="mb-4">
|
|
<h6 class="fw-semibold text-muted text-uppercase small mb-3"><?= htmlspecialchars($groupLabel) ?></h6>
|
|
<?php foreach ($groupCaps as $cap): ?>
|
|
<?php if (!array_key_exists($cap, KNOWN_CAPABILITIES)) continue; ?>
|
|
<div class="form-check mb-2">
|
|
<input class="form-check-input" type="checkbox"
|
|
name="caps[]" value="<?= htmlspecialchars($cap) ?>"
|
|
id="cap_<?= htmlspecialchars($cap) ?>"
|
|
<?= in_array($cap, $editRoleCaps, true) ? 'checked' : '' ?>>
|
|
<label class="form-check-label" for="cap_<?= htmlspecialchars($cap) ?>">
|
|
<?= htmlspecialchars(KNOWN_CAPABILITIES[$cap]) ?>
|
|
</label>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
|
|
<?php endif; ?>
|
|
</div>
|
|
|
|
<!-- Label + Actions -->
|
|
<div class="col-lg-4">
|
|
<div class="card mb-3">
|
|
<div class="card-body">
|
|
<div class="mb-3">
|
|
<label for="role_label" class="form-label fw-semibold small">Label affiché</label>
|
|
<input type="text" id="role_label" name="label" class="form-control form-control-sm"
|
|
value="<?= htmlspecialchars($editRole['label']) ?>" required>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary w-100">Enregistrer</button>
|
|
<a href="/admin/roles" class="btn btn-outline-secondary w-100 mt-2">Annuler</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</form>
|
|
|
|
<?php
|
|
$content = ob_get_clean();
|
|
$title = 'Rôle — ' . $editRole['label'];
|
|
include __DIR__ . '/layout.php';
|