peer-at-code-backend/src/be/jeffcheasey88/peeratcode/routes/users/Login.java
2023-09-04 11:16:22 +02:00

53 lines
1.9 KiB
Java

package be.jeffcheasey88.peeratcode.routes.users;
import static be.jeffcheasey88.peeratcode.framework.RequestType.POST;
import java.util.regex.Matcher;
import org.json.simple.JSONObject;
import be.jeffcheasey88.peeratcode.bonus.extract.RouteDoc;
import be.jeffcheasey88.peeratcode.framework.HttpReader;
import be.jeffcheasey88.peeratcode.framework.HttpWriter;
import be.jeffcheasey88.peeratcode.framework.Response;
import be.jeffcheasey88.peeratcode.framework.Route;
import be.jeffcheasey88.peeratcode.framework.Router;
import be.jeffcheasey88.peeratcode.framework.User;
import be.jeffcheasey88.peeratcode.repository.DatabaseRepository;
public class Login implements Response{
private DatabaseRepository databaseRepo;
private Router router;
public Login(DatabaseRepository databaseRepo, Router router){
this.databaseRepo = databaseRepo;
this.router = router;
}
@RouteDoc(path = "/login", responseCode = 200, responseDescription = "L'utilisateur est inscrit")
@RouteDoc(responseCode = 403, responseDescription = "L'utilisateur est connecté")
@RouteDoc(responseCode = 400, responseDescription = "Aucune données fournie / données invalide")
@Route(path = "^\\/login$", type = POST)
public void exec(Matcher matcher, User user, HttpReader reader, HttpWriter writer) throws Exception {
if (user != null) {
writer.response(403, "Access-Control-Allow-Origin: *");
return;
}
JSONObject informations = reader.readJson();
if (informations != null) {
String pseudo = (String) informations.get("pseudo");
String password = (String) informations.get("passwd");
int id;
if ((id = databaseRepo.login(pseudo, password)) >= 0) {
writer.response(200, "Access-Control-Allow-Origin: *",
"Access-Control-Expose-Headers: Authorization",
"Authorization: Bearer " + this.router.createAuthUser(id));
return;
}
}
writer.response(400, "Access-Control-Allow-Origin: *");
}
}