cleaned the login process
This commit is contained in:
parent
e1d8e37c52
commit
8b35b3dc01
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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