Very crude permissions
TODO: Use Symfony Voters
This commit is contained in:
		
							parent
							
								
									c20ec66f22
								
							
						
					
					
						commit
						b41e394e9c
					
				| @ -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', [ | ||||
|  | ||||
| @ -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 %} | ||||
|  | ||||
| @ -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> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user