Compare commits

..

5 commits

4 changed files with 61 additions and 26 deletions

View file

@ -116,13 +116,13 @@ public class Main{
router. router.
register(new Register(repo, playersWaiting, mail)). register(new Register(repo, playersWaiting, mail)).
register(new MailConfirmation(repo, router, config.getUsersFiles(), config.getGitToken(), playersWaiting)). register(new MailConfirmation(repo, router, config.getUsersFiles(), config.getGitToken(), playersWaiting, mail)).
register(new Login(repo, router)). register(new Login(repo, router)).
register(new ProfileSettings(repo)). register(new ProfileSettings(repo)).
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

@ -62,15 +62,13 @@ public class Completion{
return tries; return tries;
} }
public void addTry(Puzzle currentPuzzle, byte[] response) { public void addTry(Puzzle currentPuzzle, byte[] response){
if (score <= 0){ if (score <= 0){
tries++; tries++;
System.out.println("Puzzle anwer:"); if (response != null && Arrays.equals(currentPuzzle.getSoluce(), response)){
System.out.println(Arrays.toString(currentPuzzle.getSoluce()));
System.out.println(new String(currentPuzzle.getSoluce()));
if (response != null && Arrays.equals(currentPuzzle.getSoluce(), response)) {
if (tries > 1) { // Loose 5% each try with a minimum of 1 for score if (tries > 1) { // Loose 5% each try with a minimum of 1 for score
score = (int) Math.ceil(currentPuzzle.getScoreMax() * (1 - ((tries - 1) / 20.))); // score = (int) Math.ceil(currentPuzzle.getScoreMax() * (1 - ((tries - 1) / 20.)));
score = currentPuzzle.getScoreMax();
if (score < 1) if (score < 1)
score = 1; score = 1;
} else } else

View file

@ -3,6 +3,7 @@ package dev.peerat.backend.routes.admins;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import dev.peerat.backend.bonus.extract.RouteDoc; import dev.peerat.backend.bonus.extract.RouteDoc;
import dev.peerat.backend.model.Group;
import dev.peerat.backend.model.PeerAtUser; import dev.peerat.backend.model.PeerAtUser;
import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.backend.repository.DatabaseRepository;
import dev.peerat.framework.Context; import dev.peerat.framework.Context;
@ -12,24 +13,34 @@ 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$", 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{
//check if admin 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;
}
Key key = new Key(); Key key = new Key();

View file

@ -16,6 +16,7 @@ import java.security.interfaces.RSAPublicKey;
import java.util.Base64; import java.util.Base64;
import java.util.Base64.Encoder; import java.util.Base64.Encoder;
import java.util.Map; import java.util.Map;
import java.util.Random;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.HttpsURLConnection;
@ -27,6 +28,7 @@ import dev.peerat.backend.bonus.extract.RouteDoc;
import dev.peerat.backend.model.PeerAtUser; import dev.peerat.backend.model.PeerAtUser;
import dev.peerat.backend.repository.DatabaseRepository; import dev.peerat.backend.repository.DatabaseRepository;
import dev.peerat.backend.utils.FormResponse; import dev.peerat.backend.utils.FormResponse;
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;
@ -43,18 +45,21 @@ public class MailConfirmation extends FormResponse {
private Encoder encoder; private Encoder encoder;
private String gitToken; private String gitToken;
private Map<String, Integer> playersWaiting; private Map<String, Integer> playersWaiting;
private Mail mail;
public MailConfirmation( public MailConfirmation(
DatabaseRepository databaseRepo, DatabaseRepository databaseRepo,
Router<PeerAtUser> router, Router<PeerAtUser> router,
String initUsersFilesPath, String initUsersFilesPath,
String gitToken, String gitToken,
Map<String, Integer> playersWaiting){ Map<String, Integer> playersWaiting,
Mail mail){
this.databaseRepo = databaseRepo; this.databaseRepo = databaseRepo;
this.router = router; this.router = router;
this.usersFilesPath = initUsersFilesPath; this.usersFilesPath = initUsersFilesPath;
this.gitToken = gitToken; this.gitToken = gitToken;
this.playersWaiting = playersWaiting; this.playersWaiting = playersWaiting;
this.mail = mail;
try { try {
generator = KeyPairGenerator.getInstance("RSA"); generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(4096); generator.initialize(4096);
@ -91,27 +96,48 @@ public class MailConfirmation extends FormResponse {
context.response(400); context.response(400);
return; return;
} }
if(code == checkCode.intValue()){
playersWaiting.remove(email); boolean pseudoAvailable = databaseRepo.checkPseudoAvailability(pseudo);
int id = databaseRepo.register(pseudo, email, password, firstname, lastname, "", "", ""); boolean emailAvailable = databaseRepo.checkEmailAvailability(email);
if(id >= 0){ if(pseudoAvailable && emailAvailable){
// createFolderToSaveSourceCode(pseudo); if(code == checkCode.intValue()){
// generateGitKey(email, pseudo, password); playersWaiting.remove(email);
context.response(200, int id = databaseRepo.register(pseudo, email, password, firstname, lastname, "", "", "");
"Access-Control-Expose-Headers: Authorization", if(id >= 0){
"Authorization: Bearer " + this.router.createAuthUser(new PeerAtUser(id))); // createFolderToSaveSourceCode(pseudo);
// generateGitKey(email, pseudo, password);
context.response(200,
"Access-Control-Expose-Headers: Authorization",
"Authorization: Bearer " + this.router.createAuthUser(new PeerAtUser(id)));
}else{
context.response(400);
JsonMap error = new JsonMap();
error.set("username_valid", pseudo);
error.set("email_valid", email);
writer.write(error.toString());
int ncode = codeGenerator();
playersWaiting.put(email, ncode);
mail.send(email, "Welcome @ Peer @ Code", "Your check code is "+ncode+" !");
}
}else{ }else{
context.response(400); context.response(400);
JsonMap error = new JsonMap();
error.set("username_valid", pseudo);
error.set("email_valid", email);
writer.write(error.toString());
} }
}else{ }else{
context.response(400); context.response(400);
JsonMap error = new JsonMap();
error.set("username_valid", pseudo);
error.set("email_valid", email);
writer.write(error.toString());
} }
} }
private int codeGenerator(){
int min = 1000;
int max = 9999;
return new Random().nextInt((max-min)) + min;
}
private void createFolderToSaveSourceCode(String pseudo) throws IOException { private void createFolderToSaveSourceCode(String pseudo) throws IOException {
Files.createDirectories(Paths.get(String.format("%s/%s", usersFilesPath, pseudo))); Files.createDirectories(Paths.get(String.format("%s/%s", usersFilesPath, pseudo)));