diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java index b4a85db..90c1433 100644 --- a/src/main/java/fr/organizee/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -11,6 +11,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; @@ -30,6 +31,9 @@ public class MembreController { @Autowired private MembreService membreService; + @Autowired + private BCryptPasswordEncoder passwordEncoder; + @ResponseBody public String home() { @@ -60,6 +64,45 @@ 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 { + this.membreService.findUserByEmail(findUserByEmail); + return ResponseEntity.status(HttpStatus.OK).body("Email trouvé !"); + + } catch (EntityNotFoundException e) { + + return ResponseEntity.status(HttpStatus.OK).body("Email introuvable !"); + } + + } + + @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)); + + 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()); + } + + return ResponseEntity.status(HttpStatus.OK).body(resultMembre); + } + //Récupérer les informations d'un membre par son ID @GetMapping(value = "/{id}") diff --git a/src/main/java/fr/organizee/model/Membre.java b/src/main/java/fr/organizee/model/Membre.java index d54a360..231359d 100644 --- a/src/main/java/fr/organizee/model/Membre.java +++ b/src/main/java/fr/organizee/model/Membre.java @@ -33,10 +33,10 @@ public class Membre { private String isAdmin; private String couleur; private String smiley; -// @ManyToOne + // @ManyToOne // @JoinColumn(name="TEAM_ID") // @JsonIgnore - @ManyToOne + @ManyToOne(cascade = CascadeType.MERGE) @JoinColumn(name="TEAM_ID") @JsonIgnoreProperties("membre") private Team team; @@ -44,24 +44,17 @@ 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, 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; - 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() { @@ -73,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; } @@ -114,22 +113,6 @@ 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() { return 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..1b1e435 100644 --- a/src/main/java/fr/organizee/service/MembreService.java +++ b/src/main/java/fr/organizee/service/MembreService.java @@ -13,7 +13,7 @@ import fr.organizee.model.Membre; public interface MembreService { /** - * Methode qui permet à un utilisateur de se connecter. + * Methode qui permet à un utilisateur de se connecter. * @param email : nom de l'utilisateur. * @param password : mot de passe de l'utilisateur. * @returnun JWT si credentials est valide, throws InvalidCredentialsException otherwise. @@ -24,11 +24,12 @@ public interface MembreService { /** * Methode qui permet de s'inscrire. * @param membre nouvel utilisateur. - * @return un JWT si user n'existe pas déjà ! + * @return un JWT si user n'existe pas déjà ! * @throws ExistingUsernameException */ String signup(Membre membre) throws ExistingUsernameException; + /** * Methode qui retourne tous les utilisateurs de la bd * @return the list of all application users. @@ -36,10 +37,14 @@ public interface MembreService { List findAllUsers(); /** - * Methode qui retourne un utilisateur à partir de son username + * Methode qui retourne un utilisateur à partir de son username * @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..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.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 { @@ -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); + } + + }