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;
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<String> login(@RequestParam String identifier, String password, Date expirationDate){
User user = userService.getUser(identifier);
if (user == null){
return new ResponseEntity<String>("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<String>("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();
}
}

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