Merge branch 'Blandine' into dev

This commit is contained in:
Blandine Bajard 2022-02-18 17:29:12 +01:00
commit 2d4bfa7258
28 changed files with 742 additions and 92 deletions

1
.idea/compiler.xml generated
View File

@ -7,6 +7,7 @@
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" /> <outputRelativeToContentRoot value="true" />
<module name="Organizee" /> <module name="Organizee" />
<module name="organizee" />
</profile> </profile>
</annotationProcessing> </annotationProcessing>
</component> </component>

3
.idea/misc.xml generated
View File

@ -11,4 +11,7 @@
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="openjdk-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
<component name="ProjectType">
<option name="id" value="jpab" />
</component>
</project> </project>

18
pom.xml
View File

@ -2,12 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>fr.organizee</groupId> <groupId>fr.organizee</groupId>
<artifactId>organizee</artifactId> <artifactId>organizee</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
@ -16,6 +11,12 @@
<properties> <properties>
<java.version>11</java.version> <java.version>11</java.version>
</properties> </properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
@ -38,7 +39,10 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>

View File

@ -1,10 +1,7 @@
package fr.organizee.controller; package fr.organizee.controller;
import fr.organizee.model.Contact; import fr.organizee.model.Contact;
import fr.organizee.model.Membre;
import fr.organizee.model.Team;
import fr.organizee.repository.ContactRepository; import fr.organizee.repository.ContactRepository;
import fr.organizee.repository.TeamRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -24,7 +21,7 @@ public class ContactController {
private ContactRepository contactRepo; private ContactRepository contactRepo;
@GetMapping(value = "/{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){ public ResponseEntity<?> findById(@PathVariable int id){
Optional<Contact> contact = null; Optional<Contact> contact = null;
try try
@ -38,7 +35,7 @@ public class ContactController {
} }
@GetMapping(value = "team/{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){ public ResponseEntity<?> findByTeamId(@PathVariable int team_id){
List<Contact> contacts = null; List<Contact> contacts = null;
try try
@ -52,7 +49,7 @@ public class ContactController {
} }
@PostMapping(value="/add") @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){ public ResponseEntity<?> addContact(@RequestBody Contact contact){
Contact resultContact = null; Contact resultContact = null;
try { try {
@ -65,7 +62,7 @@ public class ContactController {
} }
@PutMapping("/update/{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 { public ResponseEntity<?> updateContact(@RequestBody Contact contact, @PathVariable Integer id) throws Exception {
Contact resultContact = null; Contact resultContact = null;
try { try {
@ -79,7 +76,7 @@ public class ContactController {
} }
@DeleteMapping(value = "/delete/{id}") @DeleteMapping(value = "/delete/{id}")
@PreAuthorize("hasRole('ROLE_PARENT')") //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> deleteContact(@PathVariable int id){ public ResponseEntity<?> deleteContact(@PathVariable int id){
try { try {
contactRepo.delete(contactRepo.getById(id)); contactRepo.delete(contactRepo.getById(id));

View File

@ -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<Evenement> 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 !");
}
}
}

View File

@ -0,0 +1,43 @@
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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
@RestController
@RequestMapping("/sendmail")
public class MailController {
SendMailService service;
public MailController(SendMailService service) {
this.service = service;
}
// Envoi de mail en text brut
@PostMapping("/text")
public ResponseEntity<String> 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<String> 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<String> sendAttachmentEmail(@RequestBody Mail mail) throws MessagingException {
service.sendMailWithAttachments(mail);
return new ResponseEntity<>("Attachment mail sent successfully", HttpStatus.OK);
}
}

View File

@ -5,9 +5,7 @@ import fr.organizee.dto.MembreDto;
import fr.organizee.exception.ExistingUsernameException; import fr.organizee.exception.ExistingUsernameException;
import fr.organizee.exception.InvalidCredentialsException; import fr.organizee.exception.InvalidCredentialsException;
import fr.organizee.model.Membre; import fr.organizee.model.Membre;
//import fr.organizee.model.Team;
import fr.organizee.repository.MembreRepository; import fr.organizee.repository.MembreRepository;
//import fr.organizee.repository.TeamRepository;
import fr.organizee.service.MembreService; import fr.organizee.service.MembreService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@ -36,10 +34,6 @@ public class MembreController {
@Autowired @Autowired
private BCryptPasswordEncoder passwordEncoder; private BCryptPasswordEncoder passwordEncoder;
// @Autowired
// private TeamRepository teamRepo;
// @RequestMapping("/membres")
@ResponseBody @ResponseBody
public String home() public String home()
{ {
@ -49,8 +43,9 @@ public class MembreController {
return sb.toString(); return sb.toString();
} }
// Récupère tout les membres de la base
@GetMapping(value = "/all") @GetMapping(value = "/all")
@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
public ResponseEntity<?> getAll(){ public ResponseEntity<?> getAll(){
List<Membre> liste = null; List<Membre> liste = null;
try try
@ -109,21 +104,9 @@ public class MembreController {
} }
// @GetMapping(value = "/team/all") //Récupérer les informations d'un membre par son ID
// public ResponseEntity<?> getAllTeam(){
// List<Team> liste = null;
// try
// {
// liste = teamRepo.findAll();
// } catch (Exception e) {
// return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
// }
//
// return ResponseEntity.status(HttpStatus.OK).body(liste);
// }
@GetMapping(value = "/{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){ public ResponseEntity<?> findById(@PathVariable int id){
Optional<Membre> membre = null; Optional<Membre> membre = null;
try try
@ -136,15 +119,9 @@ public class MembreController {
return ResponseEntity.status(HttpStatus.OK).body(membre); return ResponseEntity.status(HttpStatus.OK).body(membre);
} }
// @GetMapping(value = "/membres/delete/{id}") //Efface un membre par son ID
// public void deleteMembreId(@PathVariable("id") Integer id) {
//
// membreRepo.deleteById(id);
//
// }
@DeleteMapping(value = "/delete/{id}") @DeleteMapping(value = "/delete/{id}")
@PreAuthorize("hasRole('ROLE_PARENT')") //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> deleteMembre(@PathVariable int id){ public ResponseEntity<?> deleteMembre(@PathVariable int id){
try { try {
membreRepo.delete(membreRepo.getById(id)); membreRepo.delete(membreRepo.getById(id));
@ -157,6 +134,7 @@ public class MembreController {
} }
} }
//Ajouter un membre et inscription
@PostMapping("/sign-up") @PostMapping("/sign-up")
public ResponseEntity<JsonWebToken> signUp(@RequestBody Membre membre) { public ResponseEntity<JsonWebToken> signUp(@RequestBody Membre membre) {
try { try {
@ -166,6 +144,7 @@ public class MembreController {
} }
} }
//Login
@PostMapping("/sign-in") @PostMapping("/sign-in")
public ResponseEntity<JsonWebToken> signIn(@RequestBody Membre membre) { public ResponseEntity<JsonWebToken> signIn(@RequestBody Membre membre) {
try { try {
@ -175,8 +154,9 @@ public class MembreController {
} }
} }
//Met a jour les informations d'un membre par son ID
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
@PreAuthorize("hasRole('ROLE_PARENT')") //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> updateMembre(@RequestBody Membre membre, @PathVariable Integer id) throws Exception { public ResponseEntity<?> updateMembre(@RequestBody Membre membre, @PathVariable Integer id) throws Exception {
Membre resultMembre = null; Membre resultMembre = null;
try { try {

View File

@ -1,7 +1,7 @@
package fr.organizee.controller; package fr.organizee.controller;
import fr.organizee.model.Contact;
import fr.organizee.model.Menu; import fr.organizee.model.Menu;
import fr.organizee.model.Team;
import fr.organizee.repository.MenuRepository; import fr.organizee.repository.MenuRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@ -21,8 +21,9 @@ public class MenuController {
@Autowired @Autowired
private MenuRepository menuRepository; private MenuRepository menuRepository;
//Récupère les infos d'un menu par son ID
@GetMapping(value = "/{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){ public ResponseEntity<?> findById(@PathVariable int id){
Optional<Menu> menu = null; Optional<Menu> menu = null;
try try
@ -35,8 +36,9 @@ public class MenuController {
return ResponseEntity.status(HttpStatus.OK).body(menu); return ResponseEntity.status(HttpStatus.OK).body(menu);
} }
//Récupère les infos des menus par la team ID
@GetMapping(value = "team/{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) { public ResponseEntity<?> findByTeamId(@PathVariable int team_id) {
List<Menu> menus = null; List<Menu> menus = null;
try { try {
@ -47,11 +49,15 @@ public class MenuController {
return ResponseEntity.status(HttpStatus.OK).body(menus); return ResponseEntity.status(HttpStatus.OK).body(menus);
} }
@PostMapping(value="/add") //Ajoute un nouveau menu
@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") @PostMapping(value="/add/{team_id}", produces="application/json", consumes= "application/json")
public ResponseEntity<?> addMenu(@RequestBody Menu menu){ //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
public ResponseEntity<?> addMenu(@RequestBody Menu menu, @PathVariable Integer team_id){
Menu resultMenu = null; Menu resultMenu = null;
try { try {
Team team=new Team();
team.setId(team_id);
menu.setTeam(team);
resultMenu = menuRepository.saveAndFlush(menu); resultMenu = menuRepository.saveAndFlush(menu);
} catch (Exception e) { } catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
@ -60,22 +66,28 @@ public class MenuController {
return ResponseEntity.status(HttpStatus.CREATED).body(resultMenu); return ResponseEntity.status(HttpStatus.CREATED).body(resultMenu);
} }
@PutMapping("/update/{id}") //Mise a jour d'un menu par son ID
@PreAuthorize("hasRole('ROLE_PARENT')") @PutMapping("/update/{team_id}/{id}")
public ResponseEntity<?> updateMenu(@RequestBody Menu menu, @PathVariable Integer id) throws Exception { //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> updateMenu(@RequestBody Menu menu, @PathVariable Integer team_id, @PathVariable Integer id) throws Exception {
Menu resultMenu = null; Menu resultMenu = null;
try { try {
menu.setId(menuRepository.findById(id).get().getId());
Team team=new Team();
team.setId(team_id);
menu.setTeam(team);
resultMenu = menuRepository.save(menu); resultMenu = menuRepository.save(menu);
} catch (Exception e) { } catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage());
} }
return ResponseEntity.status(HttpStatus.OK).body(menuRepository); return ResponseEntity.status(HttpStatus.OK).body(resultMenu);
} }
//Efface un menu par son ID
@DeleteMapping(value = "/delete/{id}") @DeleteMapping(value = "/delete/{id}")
@PreAuthorize("hasRole('ROLE_PARENT')") //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> deleteMenu(@PathVariable int id){ public ResponseEntity<?> deleteMenu(@PathVariable int id){
try { try {
menuRepository.delete(menuRepository.getById(id)); menuRepository.delete(menuRepository.getById(id));

View File

@ -0,0 +1,110 @@
package fr.organizee.controller;
import fr.organizee.model.Tache;
import fr.organizee.model.TodoList;
import fr.organizee.repository.TacheRepository;
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.web.bind.annotation.*;
import javax.persistence.EntityNotFoundException;
import java.util.List;
import java.util.Optional;
@RestController
@CrossOrigin("*")
@RequestMapping("/taches")
public class TacheController {
@Autowired
private TacheRepository tacheRepo;
// Récupère toutes les taches de toutes la base toutes team confondu
@GetMapping(value = "/all")
public ResponseEntity<?> getAll(){
List<Tache> liste = null;
try
{
liste = tacheRepo.findAll();
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
return ResponseEntity.status(HttpStatus.OK).body(liste);
}
// Récupère les infos d'une tache avec son ID
@GetMapping(value = "/{id}")
public ResponseEntity<?> findById(@PathVariable int id){
Optional<Tache> tache = null;
try
{
tache = tacheRepo.findById(id);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
return ResponseEntity.status(HttpStatus.OK).body(tache);
}
// Efface une tache avec son ID
@DeleteMapping(value = "/delete/{id}")
public ResponseEntity<?> deleteTache(@PathVariable int id){
try {
tacheRepo.delete(tacheRepo.getById(id));
return ResponseEntity.status(HttpStatus.OK).body("Tache effacée !");
} catch (EntityNotFoundException e) {
return ResponseEntity.status(HttpStatus.OK).body("Tache introuvable !");
}
}
// Ajoute une tache
@PostMapping(value="/add/{idTodoList}", produces="application/json", consumes="application/json")
public ResponseEntity<?> addTache(@RequestBody Tache tache,@PathVariable Integer idTodoList){
Tache resultTache = null;
try {
TodoList todolist=new TodoList();
todolist.setId(idTodoList);
tache.setTodolist(todolist);
resultTache = tacheRepo.saveAndFlush(tache);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
return ResponseEntity.status(HttpStatus.CREATED).body(resultTache);
}
//Met a jour les informations d'une tache avec son ID
@PutMapping("/update/{id}")
public ResponseEntity<?> updateTache(@RequestBody Tache tache, @PathVariable Integer id) throws Exception {
Tache resultTache = null;
try {
TodoList todolist=new TodoList();
todolist.setId(tacheRepo.findById(tache.getId()).get().getTodolist().getId());
tache.setTodolist(todolist);
resultTache = tacheRepo.save(tache);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage());
}
return ResponseEntity.status(HttpStatus.OK).body(resultTache);
}
//A revoir, résultat a chier, passez par la todolist
@GetMapping(value = "team/{team_id}")
public ResponseEntity<?> findByTeamId(@PathVariable int team_id){
List<Tache> taches = null;
try
{
taches = tacheRepo.FindTachesByTeam(team_id);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
return ResponseEntity.status(HttpStatus.OK).body(taches);
}
}

View File

@ -1,6 +1,5 @@
package fr.organizee.controller; package fr.organizee.controller;
import fr.organizee.model.Membre;
import fr.organizee.model.Team; import fr.organizee.model.Team;
import fr.organizee.repository.TeamRepository; import fr.organizee.repository.TeamRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -34,7 +33,7 @@ public class TeamController {
// Récupération de toutes les teams // Récupération de toutes les teams
@GetMapping(value = "/all") @GetMapping(value = "/all")
@PreAuthorize("hasRole('ROLE_PARENT')") //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> getAllTeam(){ public ResponseEntity<?> getAllTeam(){
List<Team> liste = null; List<Team> liste = null;
try try
@ -48,7 +47,7 @@ public class TeamController {
} }
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')")
public ResponseEntity<?> findTeamById(@PathVariable int id){ public ResponseEntity<?> findTeamById(@PathVariable int id){
Optional<Team> liste = null; Optional<Team> liste = null;
try try
@ -62,7 +61,7 @@ public class TeamController {
} }
@PostMapping(value="/add", produces="application/json", consumes="application/json") @PostMapping(value="/add", produces="application/json", consumes="application/json")
@PreAuthorize("hasRole('ROLE_PARENT')") //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> addTeam(@RequestBody Team team){ public ResponseEntity<?> addTeam(@RequestBody Team team){
Team resultTeam = null; Team resultTeam = null;
try { try {
@ -75,7 +74,7 @@ public class TeamController {
} }
@PutMapping("/update/{id}") @PutMapping("/update/{id}")
@PreAuthorize("hasRole('ROLE_PARENT')") //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> updateTeam(@RequestBody Team team, @PathVariable Integer id) throws Exception { public ResponseEntity<?> updateTeam(@RequestBody Team team, @PathVariable Integer id) throws Exception {
Team resultTeam = null; Team resultTeam = null;
try { try {
@ -89,7 +88,7 @@ public class TeamController {
} }
@DeleteMapping(value = "/delete/{id}") @DeleteMapping(value = "/delete/{id}")
@PreAuthorize("hasRole('ROLE_PARENT')") //@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> deleteTeam(@PathVariable int id){ public ResponseEntity<?> deleteTeam(@PathVariable int id){
try { try {
teamRepo.delete(teamRepo.getById(id)); teamRepo.delete(teamRepo.getById(id));

View File

@ -0,0 +1,75 @@
package fr.organizee.controller;
import fr.organizee.model.TodoList;
import fr.organizee.repository.TodoListRepository;
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.web.bind.annotation.*;
import javax.persistence.EntityNotFoundException;
import java.util.List;
@RestController
@CrossOrigin("*")
@RequestMapping("/todolist")
public class TodoListController {
@Autowired
private TodoListRepository todolistRepo;
@GetMapping(value = "/all")
public ResponseEntity<?> getAll(){
List<TodoList> liste = null;
try
{
liste = todolistRepo.findAll();
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
return ResponseEntity.status(HttpStatus.OK).body(liste);
}
@DeleteMapping(value = "/delete/{id}")
//@PreAuthorize("hasRole('ROLE_PARENT')")
public ResponseEntity<?> deleteTodolist(@PathVariable int id){
try {
todolistRepo.delete(todolistRepo.getById(id));
//membreRepo.deleteById(id);
return ResponseEntity.status(HttpStatus.OK).body("Todolist effacée !");
} catch (EntityNotFoundException e) {
return ResponseEntity.status(HttpStatus.OK).body("Todolist introuvable !");
}
}
@GetMapping(value = "/team/{team_id}")
public ResponseEntity<?> findByTeamId(@PathVariable int team_id){
List<TodoList> todoLists = null;
try
{
todoLists = todolistRepo.FindTodolistByTeam(team_id);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
return ResponseEntity.status(HttpStatus.OK).body(todoLists);
}
//Met a jour les informations d'une date avec son ID
@PutMapping("/update/{id}")
public ResponseEntity<?> updateTodolist(@RequestBody TodoList todolist, @PathVariable Integer id) throws Exception {
TodoList resultTodolist = null;
try {
resultTodolist = todolistRepo.save(todolist);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage());
}
return ResponseEntity.status(HttpStatus.OK).body(resultTodolist);
}
}

View File

@ -1,5 +1,6 @@
package fr.organizee.model; package fr.organizee.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.*; import javax.persistence.*;
@ -10,21 +11,23 @@ public class Contact {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private int id;
private String couleur;
private String nom; private String nom;
private String prenom; private String prenom;
private String telephone; private String telephone;
private String email; private String email;
private String adresse; private String adresse;
private LocalDate dateNaissance; private LocalDate dateNaissance;
@ManyToOne(cascade = CascadeType.MERGE) @ManyToOne
@JoinColumn(name="TEAM_ID") @JoinColumn(name = "TEAM_ID")
@JsonIgnoreProperties("contact") @JsonIgnoreProperties({"contact", "membre"})
private Team team; private Team team;
public Contact() { public Contact() {
} }
public Contact(String nom, String prenom, String telephone, String email, String adresse, LocalDate dateNaissance, Team team) { public Contact(String couleur, String nom, String prenom, String telephone, String email, String adresse, LocalDate dateNaissance, Team team) {
this.couleur = couleur;
this.nom = nom; this.nom = nom;
this.prenom = prenom; this.prenom = prenom;
this.telephone = telephone; this.telephone = telephone;
@ -42,6 +45,14 @@ public class Contact {
this.id = id; this.id = id;
} }
public String getCouleur() {
return couleur;
}
public void setCouleur(String couleur) {
this.couleur = couleur;
}
public String getNom() { public String getNom() {
return nom; return nom;
} }
@ -93,6 +104,7 @@ public class Contact {
public Team getTeam() { public Team getTeam() {
return team; return team;
} }
public void setTeam(Team team) { public void setTeam(Team team) {
this.team = team; this.team = team;
} }
@ -101,6 +113,7 @@ public class Contact {
public String toString() { public String toString() {
return "Contact{" + return "Contact{" +
"id=" + id + "id=" + id +
", couleur='" + couleur + '\'' +
", nom='" + nom + '\'' + ", nom='" + nom + '\'' +
", prenom='" + prenom + '\'' + ", prenom='" + prenom + '\'' +
", telephone='" + telephone + '\'' + ", telephone='" + telephone + '\'' +

View File

@ -0,0 +1,108 @@
package fr.organizee.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
public class Evenement {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private LocalDateTime start;
private LocalDateTime end;
private int allDay;
private String text;
@ManyToOne
@JoinColumn(name="MEMBRE_ID")
@JsonIgnoreProperties("evenement")
private Membre membre;
@ManyToOne
@JoinColumn(name="TEAM_ID")
@JsonIgnoreProperties({"evenement", "membre"})
private Team team;
public Evenement() {
}
public Evenement(int id, LocalDateTime start, LocalDateTime end, int allDay, String text, Membre membre, Team team) {
this.id = id;
this.start = start;
this.end = end;
this.allDay = allDay;
this.text = text;
this.membre = membre;
this.team = team;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public LocalDateTime getStart() {
return start;
}
public void setStart(LocalDateTime start) {
this.start = start;
}
public LocalDateTime getEnd() {
return end;
}
public void setEnd(LocalDateTime end) {
this.end = end;
}
public int getAllDay() {
return allDay;
}
public void setAllDay(int allDay) {
this.allDay = allDay;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Membre getMembre() {
return membre;
}
public void setMembre(Membre membre) {
this.membre = membre;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
@Override
public String toString() {
return "Evenement{" +
"id=" + id +
", start=" + start +
", end=" + end +
", allDay=" + allDay +
", text='" + text + '\'' +
", membre=" + membre +
", team=" + team +
'}';
}
}

View File

@ -0,0 +1,41 @@
package fr.organizee.model;
public class Mail {
private String recipient;
private String subject;
private String message;
public Mail() {
}
public Mail(String recipient, String subject, String message) {
this.recipient = recipient;
this.subject = subject;
this.message = message;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

View File

@ -33,10 +33,10 @@ public class Membre {
private String isAdmin; private String isAdmin;
private String couleur; private String couleur;
private String smiley; private String smiley;
// @ManyToOne // @ManyToOne
// @JoinColumn(name="TEAM_ID") // @JoinColumn(name="TEAM_ID")
// @JsonIgnore // @JsonIgnore
@ManyToOne(cascade = CascadeType.MERGE) @ManyToOne
@JoinColumn(name="TEAM_ID") @JoinColumn(name="TEAM_ID")
@JsonIgnoreProperties("membre") @JsonIgnoreProperties("membre")
private Team team; private Team team;
@ -113,7 +113,7 @@ public class Membre {
this.team = team; this.team = team;
} }
public List<Role> getRoleList() { public List<Role> getRoleList() {
return roleList; return roleList;
} }
public void setRoleList(List<Role> roleList) { public void setRoleList(List<Role> roleList) {

View File

@ -12,21 +12,21 @@ public class Menu {
private int id; private int id;
private String libelle; private String libelle;
private LocalDate dateMenu; private LocalDate dateMenu;
private int validationProposition; private String repas;
@ManyToOne(cascade = CascadeType.MERGE) // private int validationProposition;
@JoinColumn(name="TEAM_ID")
@JsonIgnoreProperties("menu")
private Team team;
@ManyToOne @ManyToOne
private Membre membre; @JoinColumn(name="TEAM_ID")
@JsonIgnoreProperties({"menu","membre"})
private Team team;
public Menu() { public Menu() {
} }
public Menu(String libelle, LocalDate dateMenu, int validationProposition) { public Menu(String libelle, LocalDate dateMenu,String repas, Team team) {
this.libelle = libelle; this.libelle = libelle;
this.dateMenu = dateMenu; this.dateMenu = dateMenu;
this.validationProposition=validationProposition; this.repas= repas;
this.team = team;
} }
public int getId() { public int getId() {
@ -53,12 +53,38 @@ public class Menu {
this.dateMenu = dateMenu; this.dateMenu = dateMenu;
} }
public String getRepas() {
return repas;
}
public void setRepas(String repas) {
this.repas = repas;
}
// public int getValidationProposition() {
// return validationProposition;
//}
//public void setValidationProposition(int validationProposition) {
// this.validationProposition = validationProposition;
// }
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
@Override @Override
public String toString() { public String toString() {
return "Menu{" + return "Menu{" +
"id=" + id + "id=" + id +
", libelle='" + libelle + '\'' + ", libelle='" + libelle + '\'' +
", dateMenu=" + dateMenu + ", dateMenu=" + dateMenu +
", team=" + team +
", repas=" + repas +
'}'; '}';
} }
} }

View File

@ -11,7 +11,7 @@ public class Tache {
private int id; private int id;
private String texte; private String texte;
private Boolean etat; private Boolean etat;
@ManyToOne(cascade = CascadeType.MERGE) @ManyToOne
@JoinColumn(name="TODOLIST_ID") @JoinColumn(name="TODOLIST_ID")
@JsonIgnoreProperties("tache") @JsonIgnoreProperties("tache")
private TodoList todolist; private TodoList todolist;

View File

@ -1,5 +1,6 @@
package fr.organizee.model; package fr.organizee.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.*; import javax.persistence.*;
@ -12,17 +13,24 @@ public class Team {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private int id;
private String nom; private String nom;
@OneToMany(mappedBy = "team", fetch=FetchType.LAZY)
@OneToMany(mappedBy = "team", fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnoreProperties("team") @JsonIgnoreProperties("team")
private List<Membre> membres = new ArrayList<>(); private List<Membre> membres = new ArrayList<>();
@OneToMany(mappedBy = "team", fetch=FetchType.LAZY)
@OneToMany(mappedBy = "team", fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnoreProperties("team") @JsonIgnoreProperties("team")
@JsonIgnore
private List<Contact> contacts = new ArrayList<>(); private List<Contact> contacts = new ArrayList<>();
@OneToMany(mappedBy = "team", fetch=FetchType.LAZY)
@OneToMany(mappedBy = "team", fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnoreProperties("team") @JsonIgnoreProperties("team")
@JsonIgnore
private List<TodoList> todolists = new ArrayList<>(); private List<TodoList> todolists = new ArrayList<>();
@OneToMany(mappedBy = "team", fetch=FetchType.LAZY)
@OneToMany(mappedBy = "team", fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnoreProperties("team") @JsonIgnoreProperties("team")
@JsonIgnore
private List<Menu> menus = new ArrayList<>(); private List<Menu> menus = new ArrayList<>();
public Team() { public Team() {

View File

@ -1,5 +1,6 @@
package fr.organizee.model; package fr.organizee.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.*; import javax.persistence.*;
@ -12,10 +13,13 @@ public class TodoList {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id; private int id;
private String nom; private String nom;
@ManyToOne(cascade = CascadeType.MERGE) @ManyToOne
@JoinColumn(name="TEAM_ID") @JoinColumn(name="TEAM_ID")
@JsonIgnoreProperties("todolist") @JsonIgnoreProperties({"todolist","membre"})
private Team team; private Team team;
@OneToMany(mappedBy = "todolist", fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JsonIgnoreProperties("todolist")
private List<Tache> taches = new ArrayList<>();
public TodoList() { public TodoList() {
} }
@ -40,11 +44,26 @@ public class TodoList {
this.nom = nom; this.nom = nom;
} }
public List<Tache> getTaches() {
return taches;
}
public void setTaches(List<Tache> taches) {
this.taches = taches;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
@Override @Override
public String toString() { public String toString() {
return "TodoList{" + return "TodoList{" +
"id=" + id + "id=" + id +
", nom='" + nom + '\'' + ", nom='" + nom + ", taches='" + taches + "}";
'}';
} }
} }

View File

@ -0,0 +1,16 @@
package fr.organizee.repository;
import fr.organizee.model.Evenement;
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;
@Repository
public interface EvenementRepository extends JpaRepository<Evenement, Integer> {
@Query(value = "select * from evenement where team_id = :team_id", nativeQuery = true)
List<Evenement> FindEvenementsByTeam(@Param("team_id") int team_id);
}

View File

@ -14,4 +14,5 @@ public interface MenuRepository extends JpaRepository <Menu, Integer> {
@Query(value = "select * from menu where team_id = :team_id", nativeQuery = true) @Query(value = "select * from menu where team_id = :team_id", nativeQuery = true)
List<Menu> FindMenusByTeam(@Param("team_id") int team_id); List<Menu> FindMenusByTeam(@Param("team_id") int team_id);
} }

View File

@ -1,4 +1,17 @@
package fr.organizee.repository; package fr.organizee.repository;
public interface TacheRepository { import fr.organizee.model.Tache;
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;
@Repository
public interface TacheRepository extends JpaRepository<Tache, Integer> {
// N'est plus utilisé normalement
@Query(value = "select * from todo_list, tache where todo_list.team_id = :team_id and todo_list.id = tache.todolist_id", nativeQuery = true)
List<Tache> FindTachesByTeam(@Param("team_id") int team_id);
} }

View File

@ -1,9 +1,16 @@
package fr.organizee.repository; package fr.organizee.repository;
import fr.organizee.model.Menu;
import fr.organizee.model.TodoList; import fr.organizee.model.TodoList;
import org.springframework.data.jpa.repository.JpaRepository; 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 org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface TodoListRepository extends JpaRepository<TodoList, Integer> { public interface TodoListRepository extends JpaRepository<TodoList, Integer> {
@Query(value = "select * from todo_list where team_id = :team_id", nativeQuery = true)
List<TodoList> FindTodolistByTeam(@Param("team_id") int team_id);
} }

View File

@ -27,6 +27,8 @@ import io.jsonwebtoken.JwtException;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import fr.organizee.repository.MembreRepository;
/** /**
* JWT : classe utilitaire chargée de fournir le Jeton (Token) et les ©rifications * JWT : classe utilitaire chargée de fournir le Jeton (Token) et les ©rifications
*/ */
@ -44,6 +46,8 @@ public class JwtTokenProvider {
@Autowired @Autowired
private UserDetailsService userDetailsService; private UserDetailsService userDetailsService;
@Autowired
private MembreRepository membreRepo;
/** /**
* Cette ©thode d'initialisation s'exécute avant le constructeur * Cette ©thode d'initialisation s'exécute avant le constructeur
* Elle encode notre code secret en base64 pour la transmission dans le header * Elle encode notre code secret en base64 pour la transmission dans le header
@ -104,6 +108,10 @@ public class JwtTokenProvider {
public String createToken(String email, List<Role> roles){ public String createToken(String email, List<Role> roles){
Claims claims = Jwts.claims().setSubject(email); Claims claims = Jwts.claims().setSubject(email);
claims.put("userId", membreRepo.findByEmail(email).get().getId());
if(membreRepo.findByEmail(email).get().getTeam() != null){
claims.put("teamId", membreRepo.findByEmail(email).get().getTeam().getId());
}
claims.put("auth", roles.stream().map(s -> new SimpleGrantedAuthority(s.getAuthority())).filter(Objects::nonNull).collect(Collectors.toList())); claims.put("auth", roles.stream().map(s -> new SimpleGrantedAuthority(s.getAuthority())).filter(Objects::nonNull).collect(Collectors.toList()));
System.out.println("claims = "+claims); System.out.println("claims = "+claims);

View File

@ -13,7 +13,7 @@ import fr.organizee.model.Membre;
public interface MembreService { 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 email : nom de l'utilisateur.
* @param password : mot de passe de l'utilisateur. * @param password : mot de passe de l'utilisateur.
* @returnun JWT si credentials est valide, throws InvalidCredentialsException otherwise. * @returnun JWT si credentials est valide, throws InvalidCredentialsException otherwise.
@ -24,7 +24,7 @@ public interface MembreService {
/** /**
* Methode qui permet de s'inscrire. * Methode qui permet de s'inscrire.
* @param membre nouvel utilisateur. * @param membre nouvel utilisateur.
* @return un JWT si user n'existe pas ©  ! * @return un JWT si user n'existe pas © !
* @throws ExistingUsernameException * @throws ExistingUsernameException
*/ */
String signup(Membre membre) throws ExistingUsernameException; String signup(Membre membre) throws ExistingUsernameException;
@ -37,7 +37,7 @@ public interface MembreService {
List<Membre> findAllUsers(); List<Membre> 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. * @param email the username to look for.
* @return an Optional object containing user if found, empty otherwise. * @return an Optional object containing user if found, empty otherwise.
*/ */

View File

@ -0,0 +1,15 @@
package fr.organizee.service;
import fr.organizee.model.Mail;
import javax.mail.MessagingException;
public interface SendMailService {
void sendMail(Mail mail);
void sendMailHTML(Mail mail) throws MessagingException;
void sendMailWithAttachments(Mail mail) throws MessagingException;
}

View File

@ -0,0 +1,68 @@
package fr.organizee.service;
import fr.organizee.model.Mail;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
@Service
public class SendMailServiceImpl implements SendMailService {
private final JavaMailSender javaMailSender;
public SendMailServiceImpl(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
@Override
public void sendMail(Mail mail) {
SimpleMailMessage msg = new SimpleMailMessage();
msg.setTo(mail.getRecipient(), mail.getRecipient());
msg.setSubject(mail.getSubject());
msg.setText(mail.getMessage());
javaMailSender.send(msg);
}
@Override
public void sendMailHTML(Mail mail) throws MessagingException {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true, "utf-8");
helper.setTo(mail.getRecipient());
helper.setSubject(mail.getSubject());
String htmlMsg = "<h3>Test d'envoi de mail au format HTML</h3>"
+"<img src='http://www.apache.org/images/asf_logo_wide.gif'>";
msg.setContent(htmlMsg, "text/html");
javaMailSender.send(msg);
}
@Override
public void sendMailWithAttachments(Mail mail) throws MessagingException {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true);
helper.setTo("destinataire@email");
helper.setSubject("Testing from Spring Boot");
helper.setText("Find the attached image", true);
helper.addAttachment("hero.jpg", new ClassPathResource("hero.jpg"));
javaMailSender.send(msg);
}
}

View File

@ -37,5 +37,10 @@ INSERT INTO `tache` (`id`, `etat`, `texte`, `todolist_id`) VALUES
(4, 0, 'Acheter un sapin', 3), (4, 0, 'Acheter un sapin', 3),
(5, 0, 'Trouver un repas', 3); (5, 0, 'Trouver un repas', 3);
INSERT INTO `evenement` (`id`, `all_day`, `event_debut`, `event_fin`, `libelle`, `membre_id`, `team_id`) VALUES INSERT INTO `evenement` (`id`, `all_day`, `start`, `end`, `text`, `membre_id`, `team_id`) VALUES
(1, 0, '2022-01-13 09:00:33', '2022-01-13 13:04:38', 'Simplon', 1, 1); (1, 0, '2022-02-04 09:00:00', '2022-02-04 13:00:00', 'Simplon', 1, 1),
(2, 0, '2022-02-03 12:00:00', '2022-02-03 13:00:00', 'Footing', 2, 1);
INSERT INTO `menu` (`id`, `date_menu`, `libelle`, `validation_proposition`, `team_id`) VALUES
(1, '2022-01-13', 'Lasagnes', 1, 1),
(2, '2022-01-03', 'Kebab', 1, 1);