Very crude permissions

TODO: Use Symfony Voters
This commit is contained in:
Nicolò P 2024-10-30 13:03:29 +01:00
parent c20ec66f22
commit b41e394e9c
3 changed files with 64 additions and 3 deletions

View File

@ -15,6 +15,15 @@ class VocabFuncContextController extends AbstractController
#[Route('/vocabs/functional_context', name: 'app_vocab_func_context')]
public function index(EntityManagerInterface $em): Response
{
$roles = $this->getUser()->getRoles();
if (! in_array('ROLE_REVISOR', $roles)
&& ! in_array('ROLE_ADMIN', $roles)
) {
$this->addFlash('warning', 'Only revisors and administrators can edit vocabularies');
return $this->redirectToRoute('app_home');
}
$terms = $em->getRepository(VocabFuncContext::class)->findBy([], ['term' => 'ASC']);
return $this->render('vocab_func_context/index.html.twig', [

View File

@ -6,10 +6,21 @@
<div class="has-text-centered">
<img width="200px" src="{{ asset('img/Logo-ArCOA-def.png') }}" />
</div>
<h1 class="is-size-1 mt-6 mb-6 has-text-centered">ArCOA Digital Archive</h1>
<h2 class="is-size-3 mb-3 has-text-centered">Archivi e Collezioni dell'Oriente Antico</h2>
<h2 class="is-size-3 mb-6 has-text-centered">Archives and Collections of the Ancient Near East</h2>
{% for message in app.flashes('warning') %}
<article class="message is-warning" style="max-width: 35vw; margin: 0 auto;">
<div class="message-header">
<p>Warning</p>
<button class="delete" aria-label="delete"></button>
</div>
<div class="message-body">{{ message }}</div>
</article>
{% endfor %}
<div class="columns" style="max-width: 35vw; margin: 0 auto;">
<div class="column mt-6 mb-5">
<div class="card content p-4 is-clickable">
@ -28,5 +39,13 @@
</div>
</div>
</div>
<script type="text/javascript" defer>
const warning = document.querySelector('.is-warning');
if (warning) {
warning.querySelector('.delete').addEventListener('click', () => {
warning.classList.add('is-hidden');
});
}
</script>
{% endblock %}

View File

@ -32,13 +32,46 @@
Administrator
{% elseif 'ROLE_REVISOR' in app.user.roles %}
Revisor
{% elseif 'ROLE_EDITOR' in app.user.roles %}
Editor
{% else %}
Reader
{% endif %}
<span class="icon is-small is-size-5 pl-3 has-text-link">
<i class="fa fa-question-circle"></i>
</span>
</p>
<article class="message is-info">
<div class="message-header">
<p>
<span class="icon is-small is-size-5 mr-3">
<i class="fa fa-info-circle"></i>
</span>
Role permissions
</p>
</div>
<div class="message-body">
{% if 'ROLE_ADMIN' in app.user.roles %}
<p>
Administrators can create and edit users of the ArCOA data entry system,
including changing passwords and user roles, and disabling accounts.
</p>
<p>
They can perform all actions on all records and vocabularies
(create, view, edit, delete).
</p>
{% elseif 'ROLE_REVISOR' in app.user.roles %}
<p>Revisors can perform all actions (create, view, edit, delete) on all records and vocabs.</p>
{% elseif 'ROLE_EDITOR' in app.user.roles %}
<p>
Editors can view vocabs, view and search all records, create new records with "draft" or "complete" status,
edit their own records and those created by other editors; they can only delete their own records, as long as the status
is "draft" or "complete".
</p>
{% else %}
<p>
Readers can view and search records that are either published, excluded or unindexed (draft and complete records cannot be viewed).
</p>
{% endif %}
</div>
</article>
</div>
</div>
</div>