diff --git a/.file.swp b/.file.swp new file mode 100644 index 0000000..97eb5de Binary files /dev/null and b/.file.swp differ diff --git a/src/main/java/fr/organizee/controller/ContactController.java b/src/main/java/fr/organizee/controller/ContactController.java index 3e18da6..4f2ac45 100644 --- a/src/main/java/fr/organizee/controller/ContactController.java +++ b/src/main/java/fr/organizee/controller/ContactController.java @@ -20,6 +20,7 @@ public class ContactController { @Autowired private ContactRepository contactRepo; + //Récupère les infos d'un contact par son ID @GetMapping(value = "/{id}") //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java index 12c4efe..6c088c4 100644 --- a/src/main/java/fr/organizee/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -4,6 +4,7 @@ import fr.organizee.dto.JsonWebToken; import fr.organizee.dto.MembreDto; import fr.organizee.exception.ExistingUsernameException; import fr.organizee.exception.InvalidCredentialsException; +import fr.organizee.exception.MembreNotFoundException; import fr.organizee.model.Membre; import fr.organizee.repository.MembreRepository; import fr.organizee.service.MembreService; @@ -19,21 +20,22 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -/* toto */ + @RestController @CrossOrigin("*") -@RequestMapping("/membres") +@RequestMapping(value="/membres") public class MembreController { @Autowired private MembreRepository membreRepo; - + @Autowired private MembreService membreService; - @Autowired private BCryptPasswordEncoder passwordEncoder; + public MembreController() {} + @ResponseBody public String home() { @@ -43,27 +45,138 @@ public class MembreController { return sb.toString(); } - // Récupère tout les membres de la base + /** + * Rechercher tous les membres + * @return + * http://localhost:8088/membres/all + */ @GetMapping(value = "/all") //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") - public ResponseEntity getAll(){ - List liste = null; + public ResponseEntity getAllMembres(){ + List listeMembres; try { - liste = membreRepo.findAll(); + listeMembres = membreRepo.findAll(); } catch (Exception e) { - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + MembreNotFoundException commandeNotFoundException = new MembreNotFoundException(); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(commandeNotFoundException.getMessage()); } - return ResponseEntity.status(HttpStatus.OK).body(liste); + return ResponseEntity.status(HttpStatus.OK).body(listeMembres); } - @GetMapping("/admin/all") - //@PreAuthorize("hasRole('ROLE_PARENT')") + /** + * Rechercher tous les membres admin + * @return + * http://localhost:8088/membres/admin/all + */ + + @GetMapping(value="/admin/all") + @PreAuthorize("hasRole('ROLE_PARENT')") public List getAllAdminUsers() { - return membreService.findAllUsers().stream().map(appUser -> new MembreDto(appUser.getEmail(), appUser.getRoleList())).collect(Collectors.toList()); - + return membreService.findAllUsers().stream().map(appUser -> + new MembreDto(appUser.getEmail(), + appUser.getRoleList())).collect(Collectors.toList()); } + + /** + * Rechercher un membre par son Id + * @return + * http://localhost:8088/membres/1 + */ + + @GetMapping(value="/{id}") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + public ResponseEntity getMembreById(@PathVariable int id) { + Optional membre; + try { + membre = membreRepo.findById(id); + if (membre.isPresent()) { + return ResponseEntity.status(HttpStatus.OK).body(membre); + } else { + MembreNotFoundException membreNotFoundException = new MembreNotFoundException(id); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(membreNotFoundException.getMessage()); + } + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + } + + /** + * Ajouter un membre et inscription + * @return + * http://localhost:8088/membres/sign-up + */ + + @PostMapping(value="/sign-up") + public ResponseEntity signUp(@RequestBody Membre membre) { + try { + return ResponseEntity.ok(new JsonWebToken(membreService.signup(membre))); + } catch (ExistingUsernameException ex) { + return ResponseEntity.badRequest().build(); + } + } + + /** + * Modifier une commande par son Id + * @return + * http://localhost:8088/membres/update/1 + * + */ + @PutMapping("/update/{id}") + //@PreAuthorize("hasRole('ROLE_PARENT')") + public ResponseEntity updateMembre(@RequestBody Membre membre, @PathVariable int id){ + Optional membreUpdate; + try { + membreUpdate = membreRepo.findById(id); + // membre trouvé + if(membreUpdate.isPresent()){ + membre.setId(membreUpdate.get().getId()); + membreRepo.save(membre); + } + //membre inconnu + else{ + MembreNotFoundException membreNotFoundException = new MembreNotFoundException(id); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(membreNotFoundException.getMessage()); + } + //gestion de l'erreur + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + // retour membre + return ResponseEntity.status(HttpStatus.OK).body(membre); + } + + /** + * Supprimer un membre par son Id + * @return + * http://localhost:8088/membres/delete/1 + */ + @DeleteMapping(value = "/delete/{id}") + //@PreAuthorize("hasRole('ROLE_PARENT')") + public ResponseEntity deleteMembre(@PathVariable int id){ + try { + membreRepo.getById(id); + membreRepo.deleteById(id); + return ResponseEntity.status(HttpStatus.OK).body("Membre supprimé !"); + } catch (Exception e) { + MembreNotFoundException membreNotFoundException = new membreNotFoundException(id); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(membreNotFoundException.getMessage()); + } + } + + + /**************************** Login / Se connceter ****************************/ + @PostMapping("/sign-in") + public ResponseEntity signIn(@RequestBody Membre membre) { + try { + return ResponseEntity.ok(new JsonWebToken(membreService.signin(membre.getEmail(), membre.getPassword()))); + } catch (InvalidCredentialsException ex) { + return ResponseEntity.badRequest().build(); + } + } + + /********************* Gestion Mot de Passe ************************************/ //cette methode ne fonctionne pas parce que ça affiche "trouvé" dans tous les cas @GetMapping("/forgot-password") //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") @@ -102,70 +215,4 @@ public class MembreController { return ResponseEntity.status(HttpStatus.OK).body(resultMembre); } - - - //Récupérer les informations d'un membre par son ID - @GetMapping(value = "/{id}") - //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") - public ResponseEntity findById(@PathVariable int id){ - Optional membre = null; - try - { - membre = membreRepo.findById(id); - } catch (Exception e) { - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); - } - - return ResponseEntity.status(HttpStatus.OK).body(membre); - } - - //Efface un membre par son ID - @DeleteMapping(value = "/delete/{id}") - //@PreAuthorize("hasRole('ROLE_PARENT')") - public ResponseEntity deleteMembre(@PathVariable int id){ - try { - membreRepo.delete(membreRepo.getById(id)); - //membreRepo.deleteById(id); - return ResponseEntity.status(HttpStatus.OK).body("Membre effacé !"); - - } catch (EntityNotFoundException e) { - - return ResponseEntity.status(HttpStatus.OK).body("Membre introuvable !"); - } - } - - //Ajouter un membre et inscription - @PostMapping("/sign-up") - public ResponseEntity signUp(@RequestBody Membre membre) { - try { - return ResponseEntity.ok(new JsonWebToken(membreService.signup(membre))); - } catch (ExistingUsernameException ex) { - return ResponseEntity.badRequest().build(); - } - } - - //Login - @PostMapping("/sign-in") - public ResponseEntity signIn(@RequestBody Membre membre) { - try { - return ResponseEntity.ok(new JsonWebToken(membreService.signin(membre.getEmail(), membre.getPassword()))); - } catch (InvalidCredentialsException ex) { - return ResponseEntity.badRequest().build(); - } - } - - //Met a jour les informations d'un membre par son ID - @PutMapping("/update/{id}") - //@PreAuthorize("hasRole('ROLE_PARENT')") - public ResponseEntity updateMembre(@RequestBody Membre membre, @PathVariable Integer id) throws Exception { - Membre resultMembre = null; - try { - resultMembre = membreRepo.save(membre); - - } catch (Exception e) { - return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); - } - - return ResponseEntity.status(HttpStatus.OK).body(resultMembre); - } } diff --git a/src/main/java/fr/organizee/exception/MembreNotFoundAdvice.java b/src/main/java/fr/organizee/exception/MembreNotFoundAdvice.java new file mode 100644 index 0000000..f50edba --- /dev/null +++ b/src/main/java/fr/organizee/exception/MembreNotFoundAdvice.java @@ -0,0 +1,13 @@ +package fr.organizee.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +public class MembreNotFoundAdvice { + @ResponseBody + @ExceptionHandler(MembreNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + String membreNotFoundHandler(MembreNotFoundException ex){return ex.getMessage();} +} diff --git a/src/main/java/fr/organizee/exception/MembreNotFoundException.java b/src/main/java/fr/organizee/exception/MembreNotFoundException.java new file mode 100644 index 0000000..fda48c0 --- /dev/null +++ b/src/main/java/fr/organizee/exception/MembreNotFoundException.java @@ -0,0 +1,7 @@ +package fr.organizee.exception; + + +public class MembreNotFoundException extends RuntimeException{ + public MembreNotFoundException(int id){ super("Membre" + id + " introuvable");} + public MembreNotFoundException(){ super("Membres introuvables");} +}