Skip to content

Gestion des Autorisations

Emmanuel DEMEY edited this page Feb 7, 2024 · 1 revision

Une nouvelle façon de gérer les autorisations aux API a été mis en place sur les modules suivants :

  • structures
  • datasets
  • listes de codes

Cette pratique consiste à utiliser que des annotations PreAuthorize sur les controlleurs, afin de centraliser le tout au même endroit et de faciliter la maintenance.

Voici un exemple complet qui indique que pour supprimer une structure, il faut soit être ADMIN soit être CONTRIBUTOR et vouloir supprimer une structure qui n'est pas encore publiée.

@PreAuthorize("
     @AuthorizeMethodDecider.isAdmin() || 
     @AuthorizeMethodDecider.isStructureContributor(#id, T(fr.insee.rmes.model.ValidationStatus).UNPUBLISHED)
")
@DeleteMapping("/structure/{id}")
@Operation(operationId = "deleteStructure", summary = "Delete a structure")
public ResponseEntity<Object> deleteStructure(@PathVariable("id") String id) throws RmesException {
   structureService.deleteStructure(id);
   return ResponseEntity.status(HttpStatus.SC_OK).body(id);
}
Clone this wiki locally