diff --git a/src/main/java/fr/organizee/dto/controller/ContactController.java b/src/main/java/fr/organizee/controller/ContactController.java similarity index 98% rename from src/main/java/fr/organizee/dto/controller/ContactController.java rename to src/main/java/fr/organizee/controller/ContactController.java index e9eeacc..e93e926 100644 --- a/src/main/java/fr/organizee/dto/controller/ContactController.java +++ b/src/main/java/fr/organizee/controller/ContactController.java @@ -1,4 +1,4 @@ -package fr.organizee.dto.controller; +package fr.organizee.controller; import fr.organizee.model.Contact; import fr.organizee.repository.ContactRepository; diff --git a/src/main/java/fr/organizee/dto/controller/EvenementController.java b/src/main/java/fr/organizee/controller/EvenementController.java similarity index 98% rename from src/main/java/fr/organizee/dto/controller/EvenementController.java rename to src/main/java/fr/organizee/controller/EvenementController.java index c1a3582..f6a32a8 100644 --- a/src/main/java/fr/organizee/dto/controller/EvenementController.java +++ b/src/main/java/fr/organizee/controller/EvenementController.java @@ -1,4 +1,4 @@ -package fr.organizee.dto.controller; +package fr.organizee.controller; import fr.organizee.model.Evenement; import fr.organizee.model.Menu; diff --git a/src/main/java/fr/organizee/dto/controller/MailController.java b/src/main/java/fr/organizee/controller/MailController.java similarity index 97% rename from src/main/java/fr/organizee/dto/controller/MailController.java rename to src/main/java/fr/organizee/controller/MailController.java index e89b43f..3543668 100644 --- a/src/main/java/fr/organizee/dto/controller/MailController.java +++ b/src/main/java/fr/organizee/controller/MailController.java @@ -1,4 +1,4 @@ -package fr.organizee.dto.controller; +package fr.organizee.controller; import fr.organizee.model.Mail; import fr.organizee.service.SendMailService; diff --git a/src/main/java/fr/organizee/dto/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java similarity index 59% rename from src/main/java/fr/organizee/dto/controller/MembreController.java rename to src/main/java/fr/organizee/controller/MembreController.java index 0bfa9f5..a9d0fe8 100644 --- a/src/main/java/fr/organizee/dto/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -1,9 +1,10 @@ -package fr.organizee.dto.controller; +package fr.organizee.controller; 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,21 @@ 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 +44,140 @@ 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") + /** + * 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')") @@ -104,98 +218,5 @@ public class MembreController { } - //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); - } - -// UPDATE SUR UN CHAMPS -// @PutMapping("/update/{id}") -// public ResponseEntity updateMembre(@RequestBody Membre membre, @PathVariable Integer id) throws Exception { -// Membre resultMembre = null; -// Membre oldMembre = membreRepo.getById(id); -// oldMembre.setNom(membre.getNom()); -// //Membre resultMembre = membreRepo.getById(id); -// try { -// resultMembre = membreRepo.save(oldMembre); -// -// } catch (Exception e) { -// return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); -// } -// -// return ResponseEntity.status(HttpStatus.OK).body(resultMembre); -// } - -// @GetMapping(value = "/team/{id}") -// public ResponseEntity findTeamById(@PathVariable int id){ -// Optional liste = null; -// try -// { -// liste = teamRepo.findById(id); -// } catch (Exception e) { -// return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); -// } -// -// return ResponseEntity.status(HttpStatus.OK).body(liste); -// } } diff --git a/src/main/java/fr/organizee/dto/controller/MenuController.java b/src/main/java/fr/organizee/controller/MenuController.java similarity index 98% rename from src/main/java/fr/organizee/dto/controller/MenuController.java rename to src/main/java/fr/organizee/controller/MenuController.java index c0b5c3b..0ea98e3 100644 --- a/src/main/java/fr/organizee/dto/controller/MenuController.java +++ b/src/main/java/fr/organizee/controller/MenuController.java @@ -1,4 +1,4 @@ -package fr.organizee.dto.controller; +package fr.organizee.controller; import fr.organizee.model.Menu; import fr.organizee.model.Team; diff --git a/src/main/java/fr/organizee/dto/controller/TacheController.java b/src/main/java/fr/organizee/controller/TacheController.java similarity index 99% rename from src/main/java/fr/organizee/dto/controller/TacheController.java rename to src/main/java/fr/organizee/controller/TacheController.java index 224dd14..58e5ccc 100644 --- a/src/main/java/fr/organizee/dto/controller/TacheController.java +++ b/src/main/java/fr/organizee/controller/TacheController.java @@ -1,4 +1,4 @@ -package fr.organizee.dto.controller; +package fr.organizee.controller; import fr.organizee.model.Tache; import fr.organizee.model.TodoList; diff --git a/src/main/java/fr/organizee/dto/controller/TeamController.java b/src/main/java/fr/organizee/controller/TeamController.java similarity index 98% rename from src/main/java/fr/organizee/dto/controller/TeamController.java rename to src/main/java/fr/organizee/controller/TeamController.java index b791776..9ec47d3 100644 --- a/src/main/java/fr/organizee/dto/controller/TeamController.java +++ b/src/main/java/fr/organizee/controller/TeamController.java @@ -1,4 +1,4 @@ -package fr.organizee.dto.controller; +package fr.organizee.controller; import fr.organizee.model.Team; import fr.organizee.repository.TeamRepository; diff --git a/src/main/java/fr/organizee/dto/controller/TodoListController.java b/src/main/java/fr/organizee/controller/TodoListController.java similarity index 98% rename from src/main/java/fr/organizee/dto/controller/TodoListController.java rename to src/main/java/fr/organizee/controller/TodoListController.java index f166cf3..747eff9 100644 --- a/src/main/java/fr/organizee/dto/controller/TodoListController.java +++ b/src/main/java/fr/organizee/controller/TodoListController.java @@ -1,4 +1,4 @@ -package fr.organizee.dto.controller; +package fr.organizee.controller; import fr.organizee.model.TodoList; import fr.organizee.repository.TodoListRepository; 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");} +}