Compare commits

..

8 commits

7 changed files with 27 additions and 16 deletions

View file

@ -122,7 +122,7 @@ public class Main{
register(new ChangePassword(repo)).
register(new ForgotPassword(router, repo, mail)).
register(new DynamicLogs(repo, router.getLogger())).
register(new DynamicLogs(router, repo)).
register(new ChapterElement(repo)).
register(new ChapterList(repo)).

View file

@ -83,7 +83,7 @@ public enum DatabaseQuery {
GET_PLAYER_DETAILS_BY_PSEUDO(GET_PLAYER_DETAILS, "p.pseudo = ? GROUP BY g.name ORDER BY g.fk_chapter, g.fk_puzzle;"),
GET_PLAYER_COMPLETIONS("select c.*, p.name from completions c left join puzzles p on c.fk_puzzle = p.id_puzzle where fk_player = ?;"),
GET_PLAYER_RANK("SELECT * FROM (SELECT fk_player, RANK() OVER(ORDER BY SUM(score) DESC) rank FROM completions c LEFT JOIN puzzles puzz on puzz.id_puzzle = c.fk_puzzle LEFT JOIN chapters chap on chap.id_chapter = puzz.fk_chapter LEFT JOIN players p ON p.id_player = c.fk_player WHERE chap.id_chapter > 1 GROUP BY fk_player ORDER BY rank) AS ranks WHERE ranks.fk_player = ?;"),
UPDATE_PLAYER_INFO("UPDATE players SET pseudo = ?, email = ?, first_name = ?, last_name = ? WHERE id_player = ?"),
UPDATE_PLAYER_INFO("UPDATE players SET pseudo = ?, email = ?, firstname = ?, lastname = ? WHERE id_player = ?"),
UPDATE_PLAYER_PASSWORD("UPDATE players SET passwd = ? WHERE id_player = ?"),
// BADGES

View file

@ -12,7 +12,6 @@ import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import com.password4j.Hash;
import com.password4j.Password;
import dev.peerat.backend.Configuration;
@ -240,7 +239,7 @@ public class DatabaseRepository {
ResultSet result = statment.executeQuery();
if(result.next()) return false;
statment = DatabaseQuery.UPDATE_PLAYER_INFO.prepare(this.con);
statment.setString(1, player.getPseudo());
statment.setString(1, pseudo);
statment.setString(2, player.getEmail());
statment.setString(3, player.getFirstname());
statment.setString(4, player.getLastname());

View file

@ -134,8 +134,11 @@ class ReceivedResponse {
puzzleId = Integer.parseInt(matcher.group(1));
List<String> multiPartData = reader.readMultiPartData();
if (multiPartData != null && multiPartData.size() > 0) {
if (multiPartData != null && multiPartData.size() > 0){
this.response = multiPartData.get(0).getBytes();
System.out.println("Puzzle response:");
System.out.println(Arrays.toString(response));
System.out.println(new String(response));
if (multiPartData.size() == 3) {
this.fileName = multiPartData.get(1);
this.sourceCode = multiPartData.get(2).getBytes();

View file

@ -13,24 +13,30 @@ import dev.peerat.framework.Locker;
import dev.peerat.framework.Locker.Key;
import dev.peerat.framework.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.Router;
import dev.peerat.framework.utils.json.JsonMap;
public class DynamicLogs implements Response{
private Router<PeerAtUser> router;
private Locker<Context> locker; //Context
private DatabaseRepository repo;
public DynamicLogs(DatabaseRepository repo, Locker<Context> locker){
public DynamicLogs(Router<PeerAtUser> router, DatabaseRepository repo){
this.router = router;
this.locker = router.getLogger();
this.repo = repo;
this.locker = locker;
}
@RouteDoc(path = "/admin/logs", responseCode = 200, responseDescription = "L'utilisateur peux voir les logs en directe")
@RouteDoc(responseCode = 401, responseDescription = "L'utilisateur n'a pas accès à cette ressource")
@Route(path = "^/admin/logs$", needLogin = true, websocket = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception {
Group group = this.repo.getPlayerGroup(context.<PeerAtUser>getUser().getId(), 1);
@Route(path = "^/admin/logs$", websocket = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
JsonMap auth = reader.readJson();
PeerAtUser user = this.router.getUser(auth.get("token"));
Group group = this.repo.getPlayerGroup(user.getId(), 1);
if(!group.getName().equalsIgnoreCase("Quarter-Master - Battles PAC x CEI")){
context.response(423);
return;

View file

@ -14,7 +14,6 @@ import dev.peerat.backend.utils.Mail;
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.Router;
import dev.peerat.framework.utils.json.JsonMap;

View file

@ -6,15 +6,15 @@ import dev.peerat.backend.bonus.extract.RouteDoc;
import dev.peerat.backend.model.PeerAtUser;
import dev.peerat.backend.model.Player;
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.Response;
import dev.peerat.framework.Route;
import dev.peerat.framework.utils.json.JsonMap;
public class ProfileSettings implements Response{
public class ProfileSettings extends FormResponse{
private DatabaseRepository repo;
@ -27,7 +27,7 @@ public class ProfileSettings implements Response{
@Route(path = "^/user/settings$", type = RequestType.POST, needLogin = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception {
JsonMap json = reader.readJson();
JsonMap json = json(reader);
String pseudo = json.get("pseudo");
String email = json.get("email");
@ -35,6 +35,11 @@ public class ProfileSettings implements Response{
String lastname = json.get("lastname");
Player player = repo.getPlayer(context.<PeerAtUser>getUser().getId());
if(!areValids("pseudo", "firstname", "lastname")){
context.response(400);
return;
}
if(!player.getPseudo().equals(pseudo)){
if(!repo.updatePseudo(context.<PeerAtUser>getUser().getId(), player, pseudo)){
context.response(400);
@ -44,7 +49,6 @@ public class ProfileSettings implements Response{
}
if(!player.getEmail().equals(email)){
}
if((!player.getFirstname().equals(firstname)) || (!player.getLastname().equals(lastname))){