cleaned the login process
This commit is contained in:
		| @ -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(); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -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; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user