feat: frontend call now include the token and send the email from the token to backen servie
All checks were successful
Format / formatting (push) Successful in 6s
CI / build (push) Successful in 11s

This commit is contained in:
Pierre Tellier 2025-02-19 12:09:37 +01:00
parent 04a73073c1
commit 4698aa549f
6 changed files with 72 additions and 50 deletions

View File

@ -5,6 +5,8 @@ import enseirb.myinpulse.service.AdminApiService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@SpringBootApplication @SpringBootApplication
@ -24,8 +26,8 @@ public class AdminApi {
* @return a list of all project managed by the current admin user * @return a list of all project managed by the current admin user
*/ */
@GetMapping("/admin/projects") @GetMapping("/admin/projects")
public Iterable<Administrateurs> getProjects() { public Iterable<Administrateurs> getProjects(@AuthenticationPrincipal Jwt principal) {
return adminApiService.getProjects(); return adminApiService.getProjects(principal.getClaimAsString("email"));
} }
/** /**
@ -34,8 +36,8 @@ public class AdminApi {
* @return a list of upcoming appointments for the current user * @return a list of upcoming appointments for the current user
*/ */
@GetMapping("/admin/appointments/upcoming") @GetMapping("/admin/appointments/upcoming")
public Iterable<Appointment> getUpcomingAppointments() { public Iterable<Appointment> getUpcomingAppointments(@AuthenticationPrincipal Jwt principal) {
return adminApiService.getUpcomingAppointments(); return adminApiService.getUpcomingAppointments(principal.getClaimAsString("email"));
} }
/** /**
@ -51,6 +53,8 @@ public class AdminApi {
/** /**
* Endpoint used to make a decision about a project. * Endpoint used to make a decision about a project.
* *
* <p>The decision must contains the administrator
*
* @return the status code of the request * @return the status code of the request
*/ */
@PostMapping("/admin/projects/decision") @PostMapping("/admin/projects/decision")
@ -77,8 +81,11 @@ public class AdminApi {
*/ */
@PostMapping("/admin/appoitements/report/{appointmentId}") @PostMapping("/admin/appoitements/report/{appointmentId}")
public void createAppointmentReport( public void createAppointmentReport(
@PathVariable String appointmentId, @RequestBody Report report) { @PathVariable String appointmentId,
adminApiService.createAppointmentReport(appointmentId, report); @RequestBody Report report,
@AuthenticationPrincipal Jwt principal) {
adminApiService.createAppointmentReport(
appointmentId, report, principal.getClaimAsString("email"));
} }
/** /**

View File

@ -6,6 +6,8 @@ import enseirb.myinpulse.service.EntrepreneurApiService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@SpringBootApplication @SpringBootApplication
@ -27,8 +29,12 @@ public class EntrepreneurApi {
* @return status code * @return status code
*/ */
@PutMapping("/entrepreneur/lcsection/modify/{sectionId}") @PutMapping("/entrepreneur/lcsection/modify/{sectionId}")
public void editLCSection(@PathVariable String sectionId, @RequestBody LCSection section) { public void editLCSection(
entrepreneurApiService.editLCSection(sectionId, section); @PathVariable String sectionId,
@RequestBody LCSection section,
@AuthenticationPrincipal Jwt principal) {
entrepreneurApiService.editLCSection(
sectionId, section, principal.getClaimAsString("email"));
} }
/** /**
@ -39,8 +45,9 @@ public class EntrepreneurApi {
* @return status code * @return status code
*/ */
@DeleteMapping("/entrepreneur/lcsection/remove/{sectionId}") @DeleteMapping("/entrepreneur/lcsection/remove/{sectionId}")
public void removeLCSection(@PathVariable String sectionId) { public void removeLCSection(
entrepreneurApiService.removeLCSection(sectionId); @PathVariable String sectionId, @AuthenticationPrincipal Jwt principal) {
entrepreneurApiService.removeLCSection(sectionId, principal.getClaimAsString("email"));
} }
/** /**
@ -51,8 +58,12 @@ public class EntrepreneurApi {
* @return status code * @return status code
*/ */
@PostMapping("/entrepreneur/lcsection/add/{sectionId}") @PostMapping("/entrepreneur/lcsection/add/{sectionId}")
public void addLCSection(@PathVariable String sectionId, @RequestBody LCSection section) { public void addLCSection(
entrepreneurApiService.addLCSection(sectionId, section); @PathVariable String sectionId,
@RequestBody LCSection section,
@AuthenticationPrincipal Jwt principal) {
entrepreneurApiService.addLCSection(
sectionId, section, principal.getClaimAsString("email"));
} }
/** /**
@ -63,7 +74,8 @@ public class EntrepreneurApi {
* @return status code * @return status code
*/ */
@PostMapping("/entrepreneur/project/request") @PostMapping("/entrepreneur/project/request")
public void requestNewProject(@RequestBody Project project) { public void requestNewProject(
entrepreneurApiService.requestNewProject(project); @RequestBody Project project, @AuthenticationPrincipal Jwt principal) {
entrepreneurApiService.requestNewProject(project, principal.getClaimAsString("email"));
} }
} }

View File

@ -8,6 +8,8 @@ import enseirb.myinpulse.service.SharedApiService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@SpringBootApplication @SpringBootApplication
@ -34,8 +36,10 @@ public class SharedApi {
public Iterable<Sections> getLCSection( public Iterable<Sections> getLCSection(
@PathVariable("projectId") String projectId, @PathVariable("projectId") String projectId,
@PathVariable("title") String title, @PathVariable("title") String title,
@PathVariable("date") String date) { @PathVariable("date") String date,
return sharedApiService.getLCSection(projectId, title, date); @AuthenticationPrincipal Jwt principal) {
return sharedApiService.getLCSection(
projectId, title, date, principal.getClaimAsString("email"));
} }
/** /**
@ -44,34 +48,33 @@ public class SharedApi {
* @return a list of all entrepreneurs in a project * @return a list of all entrepreneurs in a project
*/ */
@GetMapping("/shared/entrepreneurs/{projectId}") @GetMapping("/shared/entrepreneurs/{projectId}")
public Iterable<Entrepreneurs> getEntrepreneursByProjectId(@PathVariable int projectId) { public Iterable<Entrepreneurs> getEntrepreneursByProjectId(
return sharedApiService.getEntrepreneursByProjectId(projectId); @PathVariable int projectId, @AuthenticationPrincipal Jwt principal) {
return sharedApiService.getEntrepreneursByProjectId(
projectId, principal.getClaimAsString("email"));
} }
/** /**
* TODO: is it really useful for the admin ? We can already get all the project of the current * Endpoint used to get the administrator of a project.
* administrator.
*
* <p>Endpoint used to get the administrator of a project.
* *
* @return a list of all project managed by the current admin user * @return a list of all project managed by the current admin user
*/ */
@GetMapping("/shared/projects/admin/{projectId}") @GetMapping("/shared/projects/admin/{projectId}")
public Iterable<Administrateurs> getAdminByProjectId(@PathVariable int projectId) { public Iterable<Administrateurs> getAdminByProjectId(
return sharedApiService.getAdminByProjectId(projectId); @PathVariable int projectId, @AuthenticationPrincipal Jwt principal) {
return sharedApiService.getAdminByProjectId(projectId, principal.getClaimAsString("email"));
} }
/** /**
* TODO: Should it really be all appointments? all future appointments ? a flag to choose \\ * Endpoint used to get all appointments of a single project.
* TODO: between both ?
*
* <p>Endpoint used to get all appointments of a single project.
* *
* @return a list of all appointments. * @return a list of all appointments.
*/ */
@GetMapping("/shared/projects/appointments/{projectId}") @GetMapping("/shared/projects/appointments/{projectId}")
public Iterable<Appointment> getAppointmentsByProjectId(@PathVariable int projectId) { public Iterable<Appointment> getAppointmentsByProjectId(
return sharedApiService.getAppointmentsByProjectId(projectId); @PathVariable int projectId, @AuthenticationPrincipal Jwt principal) {
return sharedApiService.getAppointmentsByProjectId(
projectId, principal.getClaimAsString("email"));
} }
/** /**
@ -80,17 +83,17 @@ public class SharedApi {
* @return a PDF file? TODO: how does that works ? * @return a PDF file? TODO: how does that works ?
*/ */
@GetMapping("/shared/projects/appointments/report/{appointmentId}") @GetMapping("/shared/projects/appointments/report/{appointmentId}")
public void getPDFReport(@PathVariable int appointmentId) { public void getPDFReport(
sharedApiService.getPDFReport(appointmentId); @PathVariable int appointmentId, @AuthenticationPrincipal Jwt principal) {
sharedApiService.getPDFReport(appointmentId, principal.getClaimAsString("email"));
} }
/** /**
* TODO
*
* @return TODO * @return TODO
*/ */
@PostMapping("/shared/appointment/request") @PostMapping("/shared/appointment/request")
public void createAppointmentRequest(@RequestBody Appointment appointment) { public void createAppointmentRequest(
sharedApiService.createAppointmentRequest(appointment); @RequestBody Appointment appointment, @AuthenticationPrincipal Jwt principal) {
sharedApiService.createAppointmentRequest(appointment, principal.getClaimAsString("email"));
} }
} }

View File

@ -10,12 +10,12 @@ import org.springframework.web.server.ResponseStatusException;
@Service @Service
public class AdminApiService { public class AdminApiService {
// TODO // TODO
public Iterable<Administrateurs> getProjects() { public Iterable<Administrateurs> getProjects(String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
// TODO // TODO
public Iterable<Appointment> getUpcomingAppointments() { public Iterable<Appointment> getUpcomingAppointments(String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
@ -35,7 +35,7 @@ public class AdminApiService {
} }
// TODO // TODO
public void createAppointmentReport(String appointmentId, Report report) { public void createAppointmentReport(String appointmentId, Report report, String email) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }

View File

@ -11,19 +11,19 @@ import org.springframework.web.server.ResponseStatusException;
@Service @Service
public class EntrepreneurApiService { public class EntrepreneurApiService {
public void editLCSection(String sectionId, LCSection section) { public void editLCSection(String sectionId, LCSection section, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
public void removeLCSection(String sectionId) { public void removeLCSection(String sectionId, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
public void addLCSection(String sectionId, LCSection section) { public void addLCSection(String sectionId, LCSection section, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
public void requestNewProject(Project project) { public void requestNewProject(Project project, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
} }

View File

@ -9,28 +9,28 @@ import org.springframework.web.server.ResponseStatusException;
@Service @Service
public class SharedApiService { public class SharedApiService {
public Iterable<Sections> getLCSection(String projectId, String title, String date) { public Iterable<Sections> getLCSection(
String projectId, String title, String date, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
public Iterable<Entrepreneurs> getEntrepreneursByProjectId(int projectId) { public Iterable<Entrepreneurs> getEntrepreneursByProjectId(int projectId, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
public Iterable<Administrateurs> getAdminByProjectId(int projectId) { public Iterable<Administrateurs> getAdminByProjectId(int projectId, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
public Iterable<Appointment> getAppointmentsByProjectId(int projectId) { public Iterable<Appointment> getAppointmentsByProjectId(int projectId, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
public void getPDFReport(int appointmentId) { public void getPDFReport(int appointmentId, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
public void createAppointmentRequest(Appointment appointment) { public void createAppointmentRequest(Appointment appointment, String mail) {
throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet"); throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED, "Not implemented yet");
} }
} }