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 ChangePassword(repo)).
register(new ForgotPassword(router, repo, mail)). register(new ForgotPassword(router, repo, mail)).
register(new DynamicLogs(repo, router.getLogger())). register(new DynamicLogs(router, repo)).
register(new ChapterElement(repo)). register(new ChapterElement(repo)).
register(new ChapterList(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_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_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 = ?;"), 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 = ?"), UPDATE_PLAYER_PASSWORD("UPDATE players SET passwd = ? WHERE id_player = ?"),
// BADGES // BADGES

View file

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

View file

@ -134,8 +134,11 @@ class ReceivedResponse {
puzzleId = Integer.parseInt(matcher.group(1)); puzzleId = Integer.parseInt(matcher.group(1));
List<String> multiPartData = reader.readMultiPartData(); List<String> multiPartData = reader.readMultiPartData();
if (multiPartData != null && multiPartData.size() > 0) { if (multiPartData != null && multiPartData.size() > 0){
this.response = multiPartData.get(0).getBytes(); 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) { if (multiPartData.size() == 3) {
this.fileName = multiPartData.get(1); this.fileName = multiPartData.get(1);
this.sourceCode = multiPartData.get(2).getBytes(); 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.Locker.Key;
import dev.peerat.framework.Response; import dev.peerat.framework.Response;
import dev.peerat.framework.Route; import dev.peerat.framework.Route;
import dev.peerat.framework.Router;
import dev.peerat.framework.utils.json.JsonMap; import dev.peerat.framework.utils.json.JsonMap;
public class DynamicLogs implements Response{ public class DynamicLogs implements Response{
private Router<PeerAtUser> router;
private Locker<Context> locker; //Context private Locker<Context> locker; //Context
private DatabaseRepository repo; 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.repo = repo;
this.locker = locker;
} }
@RouteDoc(path = "/admin/logs", responseCode = 200, responseDescription = "L'utilisateur peux voir les logs en directe") @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") @RouteDoc(responseCode = 401, responseDescription = "L'utilisateur n'a pas accès à cette ressource")
@Route(path = "^/admin/logs$", needLogin = true, websocket = true) @Route(path = "^/admin/logs$", websocket = true)
public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception { public void exec(Matcher matcher, Context context, HttpReader reader, HttpWriter writer) throws Exception{
Group group = this.repo.getPlayerGroup(context.<PeerAtUser>getUser().getId(), 1); 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")){ if(!group.getName().equalsIgnoreCase("Quarter-Master - Battles PAC x CEI")){
context.response(423); context.response(423);
return; return;

View file

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