From 63e8f73f4e1dc30bbd4b4c9caea80782ddae9328 Mon Sep 17 00:00:00 2001 From: Blandine Bajard <83599148+BlandineBajard@users.noreply.github.com> Date: Thu, 20 Jan 2022 17:57:00 +0100 Subject: [PATCH 1/3] sign-up + forgot-password + rester-pwd non complet --- .../controller/MembreController.java | 39 +++++++++++++++++++ src/main/java/fr/organizee/model/Membre.java | 28 +------------ .../repository/MembreRepository.java | 9 +++++ .../fr/organizee/service/MembreService.java | 7 +++- .../organizee/service/MembreServiceImpl.java | 18 +++++++-- 5 files changed, 71 insertions(+), 30 deletions(-) diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java index e80f339..9c47b3f 100644 --- a/src/main/java/fr/organizee/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.web.bind.annotation.*; import javax.persistence.EntityNotFoundException; @@ -32,6 +33,9 @@ public class MembreController { @Autowired private MembreService membreService; + @Autowired + private BCryptPasswordEncoder passwordEncoder; + // @Autowired // private TeamRepository teamRepo; @@ -66,6 +70,41 @@ public class MembreController { } + @GetMapping("/forgot-password") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + public ResponseEntity findUserByEmail(@RequestBody Membre findUserByEmail) + { + try { + + this.membreService.findUserByEmail(findUserByEmail); + return ResponseEntity.ok("ok"); + } catch(Exception e) + { + return ResponseEntity.notFound().build(); + } + } + + @PutMapping("/reset-password/{email}") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + public ResponseEntity updatePassword(@RequestBody String password, @PathVariable String email) throws Exception { + Membre resultMembre; + try { + resultMembre = this.membreService.chercheEmail(email); + + System.out.println(resultMembre); + + resultMembre.setPassword(passwordEncoder.encode(password)); + + this.membreRepo.save(resultMembre); + + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); + } + + return ResponseEntity.status(HttpStatus.OK).body(resultMembre); + } + + // @GetMapping(value = "/team/all") // public ResponseEntity getAllTeam(){ // List liste = null; diff --git a/src/main/java/fr/organizee/model/Membre.java b/src/main/java/fr/organizee/model/Membre.java index 5733712..2bb7e53 100644 --- a/src/main/java/fr/organizee/model/Membre.java +++ b/src/main/java/fr/organizee/model/Membre.java @@ -44,24 +44,16 @@ public class Membre { public Membre() { } - public Membre(String nom, String prenom, LocalDate dateNaissance, @NotNull String email, @NotNull String password, String isAdmin, String couleur, String smiley, Team team, List roleList) { + public Membre(String nom, String prenom, LocalDate dateNaissance, Team team, @NotNull String email, @NotNull String password, List roleList) { this.nom = nom; this.prenom = prenom; this.dateNaissance = dateNaissance; this.email = email; this.password = password; - this.isAdmin = isAdmin; - this.couleur = couleur; - this.smiley = smiley; this.team = team; this.roleList=roleList; } - public Membre(@NotNull String email, @NotNull String password, List roleList) { - this.email = email; - this.password = password; - this.roleList=roleList; - } public int getId() { @@ -114,23 +106,7 @@ public class Membre { this.team = team; } - public String getCouleur() { - return couleur; - } - - public void setCouleur(String couleur) { - this.couleur = couleur; - } - - public String getSmiley() { - return smiley; - } - - public void setSmiley(String smiley) { - this.smiley = smiley; - } - - public List getRoleList() { + public List getRoleList() { return roleList; } public void setRoleList(List roleList) { diff --git a/src/main/java/fr/organizee/repository/MembreRepository.java b/src/main/java/fr/organizee/repository/MembreRepository.java index f431da3..137f203 100644 --- a/src/main/java/fr/organizee/repository/MembreRepository.java +++ b/src/main/java/fr/organizee/repository/MembreRepository.java @@ -1,9 +1,13 @@ package fr.organizee.repository; +import fr.organizee.model.Contact; import fr.organizee.model.Membre; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository @@ -12,7 +16,12 @@ public interface MembreRepository extends JpaRepository { Optional findByEmail(String email); + @Query(value = "select * from membre where email = :email", nativeQuery = true) + Membre chercheEmail(@Param("email") String email); + boolean existsByEmail(String email); void deleteByEmail(String email); + + } diff --git a/src/main/java/fr/organizee/service/MembreService.java b/src/main/java/fr/organizee/service/MembreService.java index 4000c67..66d57be 100644 --- a/src/main/java/fr/organizee/service/MembreService.java +++ b/src/main/java/fr/organizee/service/MembreService.java @@ -29,6 +29,7 @@ public interface MembreService { */ String signup(Membre membre) throws ExistingUsernameException; + /** * Methode qui retourne tous les utilisateurs de la bd * @return the list of all application users. @@ -40,6 +41,10 @@ public interface MembreService { * @param email the username to look for. * @return an Optional object containing user if found, empty otherwise. */ - Optional findUserByEmail(String email); + Optional findUserByEmail(Membre membre); + Optional findByEmail(String email); + + Membre chercheEmail(String email); + } diff --git a/src/main/java/fr/organizee/service/MembreServiceImpl.java b/src/main/java/fr/organizee/service/MembreServiceImpl.java index 6304d86..2e23b02 100644 --- a/src/main/java/fr/organizee/service/MembreServiceImpl.java +++ b/src/main/java/fr/organizee/service/MembreServiceImpl.java @@ -48,7 +48,7 @@ public class MembreServiceImpl implements MembreService { @Override public String signup(Membre membre) throws ExistingUsernameException { if (!membreRepository.existsByEmail(membre.getEmail())) { - Membre membreToSave = new Membre(membre.getEmail(), passwordEncoder.encode(membre.getPassword()), membre.getRoleList()); + Membre membreToSave = new Membre(membre.getNom(), membre.getPrenom(), membre.getDateNaissance(), membre.getTeam(), membre.getEmail(), passwordEncoder.encode(membre.getPassword()), membre.getRoleList()); membreRepository.save(membreToSave); return jwtTokenProvider.createToken(membre.getEmail(), membre.getRoleList()); } else { @@ -62,8 +62,20 @@ public class MembreServiceImpl implements MembreService { } @Override - public Optional findUserByEmail(String email) { - return membreRepository.findByEmail(email); + public Optional findUserByEmail(Membre membre) { + return this.membreRepository.findByEmail(membre.getEmail()); } + + @Override + public Optional findByEmail(String email) { + return this.membreRepository.findByEmail(email); + } + + @Override + public Membre chercheEmail(String email) { + return this.membreRepository.chercheEmail(email); + } + + } From 8d481cece84d26cf776f19f06a8142450a68bf17 Mon Sep 17 00:00:00 2001 From: Blandine Bajard <83599148+BlandineBajard@users.noreply.github.com> Date: Fri, 21 Jan 2022 12:55:15 +0100 Subject: [PATCH 2/3] reset password fonctionne --- .../controller/MembreController.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java index 9c47b3f..0ff9b67 100644 --- a/src/main/java/fr/organizee/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -69,19 +69,20 @@ public class MembreController { return membreService.findAllUsers().stream().map(appUser -> new MembreDto(appUser.getEmail(), appUser.getRoleList())).collect(Collectors.toList()); } - + //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')") - public ResponseEntity findUserByEmail(@RequestBody Membre findUserByEmail) - { - try { + public ResponseEntity findUserByEmail(@RequestBody Membre findUserByEmail) { + try { this.membreService.findUserByEmail(findUserByEmail); - return ResponseEntity.ok("ok"); - } catch(Exception e) - { - return ResponseEntity.notFound().build(); + return ResponseEntity.status(HttpStatus.OK).body("Email trouvé !"); + + } catch (EntityNotFoundException e) { + + return ResponseEntity.status(HttpStatus.OK).body("Email introuvable !"); } + } @PutMapping("/reset-password/{email}") @@ -95,7 +96,10 @@ public class MembreController { resultMembre.setPassword(passwordEncoder.encode(password)); + System.out.println(password); + this.membreRepo.save(resultMembre); + System.out.println(resultMembre.getPassword()); } catch (Exception e) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); From 657a31cc63114529fdb7aa849215082ae0361941 Mon Sep 17 00:00:00 2001 From: Blandine Bajard <83599148+BlandineBajard@users.noreply.github.com> Date: Fri, 21 Jan 2022 14:47:59 +0100 Subject: [PATCH 3/3] modif methode sign-up et controller membre et model membre --- src/main/java/fr/organizee/model/Membre.java | 9 ++++++++- .../java/fr/organizee/service/MembreServiceImpl.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/organizee/model/Membre.java b/src/main/java/fr/organizee/model/Membre.java index 2bb7e53..3cabf24 100644 --- a/src/main/java/fr/organizee/model/Membre.java +++ b/src/main/java/fr/organizee/model/Membre.java @@ -44,9 +44,10 @@ public class Membre { public Membre() { } - public Membre(String nom, String prenom, LocalDate dateNaissance, Team team, @NotNull String email, @NotNull String password, List roleList) { + public Membre(String nom, String prenom, String couleur, LocalDate dateNaissance, Team team, @NotNull String email, @NotNull String password, List roleList) { this.nom = nom; this.prenom = prenom; + this.couleur = couleur; this.dateNaissance = dateNaissance; this.email = email; this.password = password; @@ -65,6 +66,12 @@ public class Membre { public String getNom() { return nom; } + public String getCouleur() { + return couleur; + } + public void setCouleur(String couleur) { + this.couleur = couleur; + } public void setNom(String nom) { this.nom = nom; } diff --git a/src/main/java/fr/organizee/service/MembreServiceImpl.java b/src/main/java/fr/organizee/service/MembreServiceImpl.java index 2e23b02..2197bbc 100644 --- a/src/main/java/fr/organizee/service/MembreServiceImpl.java +++ b/src/main/java/fr/organizee/service/MembreServiceImpl.java @@ -48,7 +48,7 @@ public class MembreServiceImpl implements MembreService { @Override public String signup(Membre membre) throws ExistingUsernameException { if (!membreRepository.existsByEmail(membre.getEmail())) { - Membre membreToSave = new Membre(membre.getNom(), membre.getPrenom(), membre.getDateNaissance(), membre.getTeam(), membre.getEmail(), passwordEncoder.encode(membre.getPassword()), membre.getRoleList()); + Membre membreToSave = new Membre(membre.getNom(), membre.getPrenom(), membre.getCouleur(), membre.getDateNaissance(), membre.getTeam(), membre.getEmail(), passwordEncoder.encode(membre.getPassword()), membre.getRoleList()); membreRepository.save(membreToSave); return jwtTokenProvider.createToken(membre.getEmail(), membre.getRoleList()); } else {