1
0
forked from PGL/Clyde

cleaned the login process

This commit is contained in:
Bartha Maxime 2024-03-07 17:01:50 +01:00
parent e1d8e37c52
commit 8b35b3dc01
2 changed files with 41 additions and 24 deletions

View File

@ -1,44 +1,29 @@
package ovh.herisson.Clyde.EndPoints; package ovh.herisson.Clyde.EndPoints;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import ovh.herisson.Clyde.Services.TokenService; import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
import ovh.herisson.Clyde.Services.UserService; import ovh.herisson.Clyde.Services.AuthenticatorService;
import ovh.herisson.Clyde.Tables.User;
import java.util.Date; import java.util.Date;
@RestController @RestController
@CrossOrigin(origins = "http://localhost:5173") @CrossOrigin(origins = "http://localhost:5173")
public class LoginController { public class LoginController {
private final UserService userService; private final AuthenticatorService authServ;
private final TokenService tokenService; public LoginController(AuthenticatorService authServ){
this.authServ = authServ;
public LoginController(UserService userService, TokenService tokenService){
this.userService =userService;
this.tokenService = tokenService;
} }
@PostMapping("/login") @PostMapping("/login")
public ResponseEntity<String> login(@RequestParam String identifier, String password, Date expirationDate){ public ResponseEntity<String> login(@RequestParam String identifier, String password, Date expirationDate){
User user = userService.getUser(identifier); String sessionToken = authServ.login(identifier,password,expirationDate);
if (user == null){ if (sessionToken == null){
return new ResponseEntity<String>("wrong ID or Email", HttpStatus.BAD_REQUEST); return new UnauthorizedResponse<>("Identifier or Password incorrect");
} }
if (!userService.checkPassword(user,password)){
return new ResponseEntity<String>("wrong Password",HttpStatus.BAD_REQUEST);
}
String token = tokenService.generateNewToken();
tokenService.saveToken(token,user,expirationDate);
HttpHeaders responseHeaders = new HttpHeaders(); 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(); return ResponseEntity.ok().headers(responseHeaders).build();
} }
} }

View File

@ -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;
}
}