diff --git a/backend/database-manager/src/main/java/insa/application/helpapp/rest/AdministrationService.java b/backend/database-manager/src/main/java/insa/application/helpapp/rest/AdministrationService.java index 1853c33..09664f1 100644 --- a/backend/database-manager/src/main/java/insa/application/helpapp/rest/AdministrationService.java +++ b/backend/database-manager/src/main/java/insa/application/helpapp/rest/AdministrationService.java @@ -12,7 +12,7 @@ public class AdministrationService { @Autowired private ConnectionRepository connectionRepository; @Autowired - private RoleRepository roleRepository; + private UserRepository userRepository; public boolean checkToken(int idUser, String token) { List connections = connectionRepository.findByIdUser(idUser); @@ -24,22 +24,12 @@ public class AdministrationService { return c.getToken().equals(token) && c.getExpiresAt().isAfter(java.time.LocalDateTime.now()); } - public boolean checkRole(int idUser, int role) + public Optional getRole(int idUser) { - List connections = connectionRepository.findByIdUser(idUser); - - if (connections.isEmpty()) { - return false; + Optional user = userRepository.findById(idUser); + if (!user.isPresent()) { + return Optional.empty(); } - // Connection c = connections.getFirst(); - Optional roleOption = roleRepository.findById(role); - if(!roleOption.isPresent()) { - return false; - } - return true; - } - - public List getRoles() { - return roleRepository.findAll(); + return Optional.of(user.get().getIdRole()); } } diff --git a/backend/database-manager/src/main/java/insa/application/helpapp/rest/RoleEnum.java b/backend/database-manager/src/main/java/insa/application/helpapp/rest/RoleEnum.java new file mode 100644 index 0000000..457e31f --- /dev/null +++ b/backend/database-manager/src/main/java/insa/application/helpapp/rest/RoleEnum.java @@ -0,0 +1,19 @@ +package insa.application.helpapp.rest; + +public enum RoleEnum { + USER(1), + VOLUNTEER(2), + ADMIN(3); + + private final int value; + + // Constructor + RoleEnum(int value) { + this.value = value; + } + + // Getter + public int getValue() { + return value; + } +} diff --git a/backend/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java b/backend/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java index 99b4cda..a73d6a8 100644 --- a/backend/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java +++ b/backend/request-service/src/main/java/insa/application/helpapp/rest/RequestServiceApplication.java @@ -11,6 +11,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.beans.factory.annotation.Autowired; import java.time.LocalDateTime; +import java.util.Optional; @SpringBootApplication @RestController @@ -41,6 +42,14 @@ public class RequestServiceApplication { if(!administrationService.checkToken(idUser, token)) { return ResponseEntity.status(HttpStatus.FORBIDDEN).body("User or token invalid."); }; + Optional idRoleOption = administrationService.getRole(idUser); + if(!idRoleOption.isPresent()) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("User invalid."); + }; + int idRole = idRoleOption.get(); + if(idRole == RoleEnum.VOLUNTEER.getValue()) { + return ResponseEntity.status(HttpStatus.FORBIDDEN).body("Volunteers cannot post a request."); + } Request request = new Request(); // id_status = 1 means waiting. it is always set to 1 when created. diff --git a/backend/role-service/src/main/java/insa/application/helpapp/rest/RoleServiceApplication.java b/backend/role-service/src/main/java/insa/application/helpapp/rest/RoleServiceApplication.java index 09d1286..9669849 100644 --- a/backend/role-service/src/main/java/insa/application/helpapp/rest/RoleServiceApplication.java +++ b/backend/role-service/src/main/java/insa/application/helpapp/rest/RoleServiceApplication.java @@ -15,7 +15,7 @@ import java.util.List; public class RoleServiceApplication { @Autowired - private AdministrationService administrationService; + private RoleRepository roleRepository; public static void main(String[] args) { SpringApplication.run(RoleServiceApplication.class, args); @@ -36,6 +36,6 @@ public class RoleServiceApplication { @GetMapping("/get_roles") public List getRoles() { - return administrationService.getRoles(); + return roleRepository.findAll(); } }