diff --git a/web/src/main/java/fr/abes/item/security/CustomAuthenticationManager.java b/web/src/main/java/fr/abes/item/security/CustomAuthenticationManager.java index 7c614a4c..1eaf153c 100644 --- a/web/src/main/java/fr/abes/item/security/CustomAuthenticationManager.java +++ b/web/src/main/java/fr/abes/item/security/CustomAuthenticationManager.java @@ -59,7 +59,7 @@ public Authentication authenticate(Authentication authentication) u.setMail(this.getEmail(Integer.parseInt(u.getUserNum()))); List authorities; - if (u.getRole() != null) { + if (u.getRole() != null && (u.getRole().equals("USER") || u.getRole().equals("ADMIN"))) { authorities = new ArrayList<>(); authorities.add(new SimpleGrantedAuthority(u.getRole())); } else { diff --git a/web/src/main/java/fr/abes/item/web/AuthenticationController.java b/web/src/main/java/fr/abes/item/web/AuthenticationController.java index 11320e90..5747fe42 100644 --- a/web/src/main/java/fr/abes/item/web/AuthenticationController.java +++ b/web/src/main/java/fr/abes/item/web/AuthenticationController.java @@ -1,5 +1,6 @@ package fr.abes.item.web; +import fr.abes.item.core.exception.ForbiddenException; import fr.abes.item.security.JwtAuthenticationResponse; import fr.abes.item.security.JwtTokenProvider; import fr.abes.item.security.LoginRequest; @@ -32,10 +33,13 @@ public AuthenticationController(AuthenticationManager authenticationManager, Jwt @Operation(summary = "permet de s'authentifier et de récupérer un token.", description = "le token doit être utilisé pour accéder aux ressources protegées.") @PostMapping("/signin") - public ResponseEntity authenticateUser(@RequestBody LoginRequest loginRequest) { + public ResponseEntity authenticateUser(@RequestBody LoginRequest loginRequest) throws ForbiddenException { Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword())); SecurityContextHolder.getContext().setAuthentication(authentication); User user = (User)authentication.getPrincipal(); + if (user.getAuthorities().isEmpty()) { + throw new ForbiddenException("Ce login ne dispose pas des droits nécessaires pour accéder à Item"); + } String jwt = tokenProvider.generateToken(user); return ResponseEntity.ok(new JwtAuthenticationResponse(jwt, user.getUserNum(), user.getShortName(), user.getIln(), user.getRole(), user.getMail()));