diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java index 83d2f4f..d47885f 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java @@ -1,44 +1,29 @@ package ovh.herisson.Clyde.EndPoints; import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import ovh.herisson.Clyde.Services.TokenService; -import ovh.herisson.Clyde.Services.UserService; -import ovh.herisson.Clyde.Tables.User; +import ovh.herisson.Clyde.Responses.UnauthorizedResponse; +import ovh.herisson.Clyde.Services.AuthenticatorService; import java.util.Date; @RestController @CrossOrigin(origins = "http://localhost:5173") public class LoginController { - private final UserService userService; - private final TokenService tokenService; - - public LoginController(UserService userService, TokenService tokenService){ - this.userService =userService; - this.tokenService = tokenService; - + private final AuthenticatorService authServ; + public LoginController(AuthenticatorService authServ){ + this.authServ = authServ; } @PostMapping("/login") public ResponseEntity login(@RequestParam String identifier, String password, Date expirationDate){ - User user = userService.getUser(identifier); - if (user == null){ - return new ResponseEntity("wrong ID or Email", HttpStatus.BAD_REQUEST); + String sessionToken = authServ.login(identifier,password,expirationDate); + if (sessionToken == null){ + return new UnauthorizedResponse<>("Identifier or Password incorrect"); } - if (!userService.checkPassword(user,password)){ - return new ResponseEntity("wrong Password",HttpStatus.BAD_REQUEST); - } - - String token = tokenService.generateNewToken(); - - - tokenService.saveToken(token,user,expirationDate); - HttpHeaders responseHeaders = new HttpHeaders(); - responseHeaders.set("Set-Cookie",String.format("session_token=%s",token)); + responseHeaders.set("Set-Cookie",String.format("session_token=%s",sessionToken)); return ResponseEntity.ok().headers(responseHeaders).build(); } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java new file mode 100644 index 0000000..f3ae072 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java @@ -0,0 +1,32 @@ +package ovh.herisson.Clyde.Services; + +import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.Tables.User; + +import java.util.Date; + +@Service +public class AuthenticatorService { + + private final TokenService tokenService; + private final UserService userService; + + public AuthenticatorService(TokenService tokenService, UserService userService){ + this.tokenService = tokenService; + this.userService = userService; + } + + public User getUserFromToken(String token){ + return tokenService.getUserFromToken(token); + } + + + public String login(String identifier, String password, Date expirationDate){ + User user = userService.getUser(identifier); + if (user == null){return null;} + if (!userService.checkPassword(user,password)){return null;} + String token = tokenService.generateNewToken(); + tokenService.saveToken(token,user,expirationDate); + return token; + } +}