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 d47885f..8a0722d 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java @@ -1,4 +1,5 @@ package ovh.herisson.Clyde.EndPoints; +import com.fasterxml.jackson.annotation.JsonFormat; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -11,13 +12,26 @@ import java.util.Date; @CrossOrigin(origins = "http://localhost:5173") public class LoginController { private final AuthenticatorService authServ; - public LoginController(AuthenticatorService authServ){ - this.authServ = authServ; - } - @PostMapping("/login") - public ResponseEntity login(@RequestParam String identifier, String password, Date expirationDate){ - String sessionToken = authServ.login(identifier,password,expirationDate); + static public class RequestLogin{ + private final String identifier; + private final String password; + @JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss") + private final Date expirationDate; + public RequestLogin(String identifier, String password, Date expirationDate){ + this.identifier = identifier; + this.password = password; + this.expirationDate = expirationDate; + } + } + + public LoginController(AuthenticatorService authServ){ + this.authServ = authServ; + } + @PostMapping(value = "/login") + public ResponseEntity login(@RequestBody RequestLogin requestLogin){ + + String sessionToken = authServ.login(requestLogin.identifier,requestLogin.password,requestLogin.expirationDate); if (sessionToken == null){ return new UnauthorizedResponse<>("Identifier or Password incorrect"); } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index e619fd8..a82951d 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -1,10 +1,12 @@ package ovh.herisson.Clyde.Services; + import org.springframework.stereotype.Service; import ovh.herisson.Clyde.Repositories.TokenRepository; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; +import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.util.Date; @@ -22,9 +24,15 @@ public class TokenService { public String generateNewToken(){ byte[] bytes = new byte[64]; new SecureRandom().nextBytes(bytes); - String token = new String(bytes, StandardCharsets.US_ASCII); - System.out.println(token); - return token; + for (int i = 0; i < bytes.length; i++) { + bytes[i] = (byte) (((bytes[i]+256)%256 %95+ 32)); + } + // will never end up in the catch because of the way that SecureRandom.nextBytes is implemented + try { + return new String(bytes,"ISO_8859_1"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } } public User getUserFromToken(String token){