package dev.peerat.backend.routes.users; import java.util.regex.Matcher; import dev.peerat.backend.bonus.extract.RouteDoc; import dev.peerat.backend.model.PeerAtUser; import dev.peerat.backend.model.Player; import dev.peerat.backend.repository.DatabasePlayerRepository; import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.backend.utils.FormResponse; import dev.peerat.framework.Context; import dev.peerat.framework.HttpReader; import dev.peerat.framework.HttpWriter; import dev.peerat.framework.RequestType; import dev.peerat.framework.Route; import dev.peerat.framework.utils.json.JsonMap; public class ProfileSettings extends FormResponse{ private DatabasePlayerRepository repo; public ProfileSettings(DatabaseRepository repo){ this.repo = repo.getPlayerRepository(); validator("pseudo", "[a-zA-Z0-9&|!?{}\\[\\]%/*\\-+=:;,_#@ ]{3,100}"); } @RouteDoc(path = "/user/settings", responseCode = 200, responseDescription = "L'utilisateur a mis à jours sont profile") @RouteDoc(responseCode = 400, responseDescription = "L'utilisateur a envoyer une donnée unique, déjà utilisée") @Route(path = "^/user/settings$", type = RequestType.POST, needLogin = true) public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception { JsonMap json = json(reader); String pseudo = json.get("pseudo"); String email = json.get("email"); String firstname = json.get("firstname"); String lastname = json.get("lastname"); Player player = repo.getPlayer(context.getUser().getId()); if(!areValids("pseudo", "firstname", "lastname")){ context.response(400); return; } if(!player.getPseudo().equals(pseudo)){ if(!repo.updatePseudo(context.getUser().getId(), player, pseudo)){ context.response(400); return; } player.setPseudo(pseudo); } if(!player.getEmail().equals(email)){ } if((!player.getFirstname().equals(firstname)) || (!player.getLastname().equals(lastname))){ repo.updateProfile(context.getUser().getId(), player, lastname, firstname); } context.response(200); } }