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/.idea/compiler.xml b/.idea/compiler.xml
index c75fd2a..a500b21 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -7,6 +7,7 @@
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 06e8b35..2289c27 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -11,4 +11,7 @@
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index dbaf653..6704f63 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,12 +2,7 @@
4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.6.1
-
-
+
fr.organizee
organizee
0.0.1-SNAPSHOT
@@ -16,6 +11,12 @@
11
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.6.1
+
+
org.springframework.boot
@@ -38,7 +39,10 @@
org.springframework.boot
spring-boot-starter-web
-
+
+ org.springframework.boot
+ spring-boot-starter-mail
+
mysql
mysql-connector-java
diff --git a/src/main/java/fr/organizee/controller/ContactController.java b/src/main/java/fr/organizee/controller/ContactController.java
index 5186d12..4f2ac45 100644
--- a/src/main/java/fr/organizee/controller/ContactController.java
+++ b/src/main/java/fr/organizee/controller/ContactController.java
@@ -1,10 +1,7 @@
package fr.organizee.controller;
import fr.organizee.model.Contact;
-import fr.organizee.model.Membre;
-import fr.organizee.model.Team;
import fr.organizee.repository.ContactRepository;
-import fr.organizee.repository.TeamRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@@ -23,8 +20,10 @@ 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')")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
public ResponseEntity> findById(@PathVariable int id){
Optional contact = null;
try
@@ -37,8 +36,9 @@ public class ContactController {
return ResponseEntity.status(HttpStatus.OK).body(contact);
}
+ //Récupère les infos d'un contact par la team ID
@GetMapping(value = "team/{team_id}")
- @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
public ResponseEntity> findByTeamId(@PathVariable int team_id){
List contacts = null;
try
@@ -47,12 +47,12 @@ public class ContactController {
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
-
return ResponseEntity.status(HttpStatus.OK).body(contacts);
}
+ //Ajoute un nouveau contact
@PostMapping(value="/add")
- @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
public ResponseEntity> addContact(@RequestBody Contact contact){
Contact resultContact = null;
try {
@@ -64,8 +64,9 @@ public class ContactController {
return ResponseEntity.status(HttpStatus.CREATED).body(resultContact);
}
+ //Mise à jour du contact par son ID
@PutMapping("/update/{id}")
- @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
public ResponseEntity> updateContact(@RequestBody Contact contact, @PathVariable Integer id) throws Exception {
Contact resultContact = null;
try {
@@ -78,8 +79,9 @@ public class ContactController {
return ResponseEntity.status(HttpStatus.OK).body(resultContact);
}
+ //Efface le contact par on ID
@DeleteMapping(value = "/delete/{id}")
- @PreAuthorize("hasRole('ROLE_PARENT')")
+ //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity> deleteContact(@PathVariable int id){
try {
contactRepo.delete(contactRepo.getById(id));
diff --git a/src/main/java/fr/organizee/controller/EvenementController.java b/src/main/java/fr/organizee/controller/EvenementController.java
new file mode 100644
index 0000000..f6a32a8
--- /dev/null
+++ b/src/main/java/fr/organizee/controller/EvenementController.java
@@ -0,0 +1,78 @@
+package fr.organizee.controller;
+
+import fr.organizee.model.Evenement;
+import fr.organizee.model.Menu;
+import fr.organizee.repository.EvenementRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.persistence.EntityNotFoundException;
+import java.util.List;
+import java.util.Optional;
+
+@RestController
+@CrossOrigin("*")
+@RequestMapping("/evenements")
+public class EvenementController {
+
+ @Autowired
+ private EvenementRepository evenementRepo;
+
+ // Recupérer tout les evenements pour une team {team_id}
+ @GetMapping(value = "/team/{team_id}")
+ public ResponseEntity> findByTeamId(@PathVariable int team_id){
+ List liste = null;
+ try
+ {
+ liste = evenementRepo.FindEvenementsByTeam(team_id);
+ } catch (Exception e) {
+ return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
+ }
+
+ return ResponseEntity.status(HttpStatus.OK).body(liste);
+ }
+
+ // Ajoute un evenement au calendrier
+ @PostMapping(value="/add", produces="application/json", consumes="application/json")
+ public ResponseEntity> addTache(@RequestBody Evenement event){
+ Evenement resultEvent = null;
+ try {
+ resultEvent = evenementRepo.saveAndFlush(event);
+ } catch (Exception e) {
+ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
+ }
+
+ return ResponseEntity.status(HttpStatus.CREATED).body(resultEvent);
+ }
+
+ //Mise a jour d'un evenement par son ID
+ @PutMapping("/update/{id}")
+ //@PreAuthorize("hasRole('ROLE_PARENT')")
+ public ResponseEntity> updateEvenement(@RequestBody Evenement event, @PathVariable Integer id) throws Exception {
+ Evenement resultEvenement = null;
+ try {
+ resultEvenement = evenementRepo.save(event);
+
+ } catch (Exception e) {
+ return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage());
+ }
+
+ return ResponseEntity.status(HttpStatus.OK).body(resultEvenement);
+ }
+
+ //Efface un evenement par son ID
+ @DeleteMapping(value = "/delete/{id}")
+ //@PreAuthorize("hasRole('ROLE_PARENT')")
+ public ResponseEntity> deleteEvenement(@PathVariable int id){
+ try {
+ evenementRepo.delete(evenementRepo.getById(id));
+ return ResponseEntity.status(HttpStatus.OK).body("Evenement effacé !");
+
+ } catch (EntityNotFoundException e) {
+
+ return ResponseEntity.status(HttpStatus.OK).body("Evenement introuvable !");
+ }
+ }
+}
diff --git a/src/main/java/fr/organizee/controller/MailController.java b/src/main/java/fr/organizee/controller/MailController.java
new file mode 100644
index 0000000..5df737e
--- /dev/null
+++ b/src/main/java/fr/organizee/controller/MailController.java
@@ -0,0 +1,41 @@
+package fr.organizee.controller;
+
+import fr.organizee.model.Mail;
+import fr.organizee.service.SendMailService;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.mail.MessagingException;
+
+@RestController
+@CrossOrigin("*")
+@RequestMapping("/sendmail")
+public class MailController {
+ SendMailService service;
+
+ public MailController(SendMailService service) {
+ this.service = service;
+ }
+
+ // Envoi de mail en text brut
+ @PostMapping("/text")
+ public ResponseEntity sendMail(@RequestBody Mail mail) {
+ service.sendMail(mail);
+ return new ResponseEntity<>("Email Sent successfully", HttpStatus.OK);
+ }
+
+ // Envoi de mail au format HTML
+ @PostMapping("/html")
+ public ResponseEntity sendMailHTML(@RequestBody Mail mail) throws MessagingException {
+ service.sendMailHTML(mail);
+ return new ResponseEntity<>("HTML mail sent successfully", HttpStatus.OK);
+ }
+
+ // Envoi du mail avec une piece jointe
+ @PostMapping("/attachment")
+ public ResponseEntity sendAttachmentEmail(@RequestBody Mail mail) throws MessagingException {
+ service.sendMailWithAttachments(mail);
+ return new ResponseEntity<>("Attachment mail sent successfully", HttpStatus.OK);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java
index e80f339..a498165 100644
--- a/src/main/java/fr/organizee/controller/MembreController.java
+++ b/src/main/java/fr/organizee/controller/MembreController.java
@@ -4,117 +4,131 @@ 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.model.Team;
+import fr.organizee.model.Menu;
+import fr.organizee.model.Team;
import fr.organizee.repository.MembreRepository;
-//import fr.organizee.repository.TeamRepository;
import fr.organizee.service.MembreService;
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;
import java.util.List;
import java.util.Optional;
+import java.util.UUID;
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;
-// @Autowired
-// private TeamRepository teamRepo;
-
-// @RequestMapping("/membres")
+ public MembreController() {}
+
@ResponseBody
public String home()
{
StringBuilder sb = new StringBuilder();
sb.append("Affichages des membres
");
- sb.append("- Liste des membres
");
+ sb.append("- Liste des membres
");
return sb.toString();
}
+ /**
+ * 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;
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ 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());
}
-// @GetMapping(value = "/team/all")
-// public ResponseEntity> getAllTeam(){
-// List liste = null;
-// try
-// {
-// liste = teamRepo.findAll();
-// } catch (Exception e) {
-// return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
-// }
-//
-// return ResponseEntity.status(HttpStatus.OK).body(liste);
-// }
+ /**
+ * 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> findById(@PathVariable int id){
- Optional membre = null;
- try
- {
+ @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();
+ }
+ }
+
+ /**
+ * Rechercher un membre par l'Id de sa team
+ * @return
+ * http://localhost:8088/membres/1
+ */
+ @GetMapping(value = "team/{team_id}")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ public ResponseEntity> findByTeamId(@PathVariable int team_id) {
+ List membres = null;
+ try {
+ membres = membreRepo.FindMembresByTeam(team_id);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
-
- return ResponseEntity.status(HttpStatus.OK).body(membre);
+ return ResponseEntity.status(HttpStatus.OK).body(membres);
}
-// @GetMapping(value = "/membres/delete/{id}")
-// public void deleteMembreId(@PathVariable("id") Integer id) {
-//
-// membreRepo.deleteById(id);
-//
-// }
+ /**
+ * Inscription
+ * @return
+ * http://localhost:8088/membres/sign-up
+ */
- @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 !");
- }
- }
-
- @PostMapping("/sign-up")
+ @PostMapping(value="/sign-up")
public ResponseEntity signUp(@RequestBody Membre membre) {
try {
return ResponseEntity.ok(new JsonWebToken(membreService.signup(membre)));
@@ -123,6 +137,78 @@ public class MembreController {
}
}
+ /**
+ * Ajout d'un membre
+ * @return
+ * http://localhost:8088/membres/add
+ */
+ @PostMapping(value="/add/{team_id}", produces="application/json", consumes= "application/json")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ public ResponseEntity> addMembre(@RequestBody Membre membre, @PathVariable Integer team_id){
+ Membre resultMembre = null;
+ try{
+ Team team = new Team();
+ team.setId(team_id);
+ membre.setTeam(team);
+ //resultMembre = membreRepo.saveAndFlush(membre);
+ return ResponseEntity.ok(new JsonWebToken(membreService.signup(membre)));
+ } catch (Exception e) {
+ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
+ }
+
+ //return ResponseEntity.status(HttpStatus.CREATED).body(resultMembre);
+ }
+
+ /**
+ * 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 {
@@ -132,47 +218,37 @@ public class MembreController {
}
}
- @PutMapping("/update/{id}")
- @PreAuthorize("hasRole('ROLE_PARENT')")
- public ResponseEntity> updateMembre(@RequestBody Membre membre, @PathVariable Integer id) throws Exception {
+ /********************* Gestion Mot de Passe ************************************/
+ //cette methode ne fonctionne pas parce que ça affiche "trouvé" dans tous les cas
+ @PostMapping("/forgot-password")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ public ResponseEntity> findUserByEmail(@RequestBody Membre membre) {
Membre resultMembre = null;
try {
- resultMembre = membreRepo.save(membre);
+ resultMembre = membreRepo.chercheEmail(membre.getEmail());
+ String uuid = UUID.randomUUID().toString();
+ resultMembre.setPassword(uuid);
+ membreRepo.saveAndFlush(resultMembre);
+ return ResponseEntity.status(HttpStatus.OK).body(uuid);
+ } catch (EntityNotFoundException e) {
+ return ResponseEntity.status(HttpStatus.OK).body("Email introuvable !");
+ }
+
+ }
+
+ @PutMapping("/reset-password/{uuid}")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ public ResponseEntity> updatePassword(@RequestBody Membre membre, @PathVariable String uuid) throws Exception {
+ Membre resultMembre = null;
+ try {
+ resultMembre = membreRepo.findByUUID(uuid);
+ resultMembre.setPassword(passwordEncoder.encode(membre.getPassword()));
+ membreRepo.saveAndFlush(resultMembre);
} 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/controller/MenuController.java b/src/main/java/fr/organizee/controller/MenuController.java
index f4e4ec8..4b18a32 100644
--- a/src/main/java/fr/organizee/controller/MenuController.java
+++ b/src/main/java/fr/organizee/controller/MenuController.java
@@ -1,7 +1,7 @@
package fr.organizee.controller;
-import fr.organizee.model.Contact;
import fr.organizee.model.Menu;
+import fr.organizee.model.Team;
import fr.organizee.repository.MenuRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@@ -21,8 +21,9 @@ public class MenuController {
@Autowired
private MenuRepository menuRepository;
+ //Récupère les infos d'un menu par son ID
@GetMapping(value = "/{id}")
- @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
+ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
public ResponseEntity> findById(@PathVariable int id){
Optional