Max/Backend/loginApi Ajout mock Users et Tokens #62
@ -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();
|
||||
}
|
||||
Maxime marked this conversation as resolved
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user
en vrai c'est un choix mais souvent il ne vaut mieux pas dire si le truc qui va pas c'est l'id ou le pass parce que avec ça tu peux savoir si qqun est inscrit sur le site ou non (ce qui n'est pas toujours souhaitable)
En gros si l'un des deux est mauvais tu retourne erreur d'authentication et puis basta x)
Mais certains sites font comme t'a fait donc c'est juste un choix. les deux sont bon pour moi