Compare commits

...

5 commits

4 changed files with 61 additions and 26 deletions

View file

@ -116,13 +116,13 @@ public class Main{
router.
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 ProfileSettings(repo)).
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

@ -62,15 +62,13 @@ public class Completion{
return tries;
}
public void addTry(Puzzle currentPuzzle, byte[] response) {
public void addTry(Puzzle currentPuzzle, byte[] response){
if (score <= 0){
tries++;
System.out.println("Puzzle anwer:");
System.out.println(Arrays.toString(currentPuzzle.getSoluce()));
System.out.println(new String(currentPuzzle.getSoluce()));
if (response != null && Arrays.equals(currentPuzzle.getSoluce(), response)) {
if (response != null && Arrays.equals(currentPuzzle.getSoluce(), response)){
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)
score = 1;
} else

View file

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

View file

@ -16,6 +16,7 @@ import java.security.interfaces.RSAPublicKey;
import java.util.Base64;
import java.util.Base64.Encoder;
import java.util.Map;
import java.util.Random;
import java.util.regex.Matcher;
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.repository.DatabaseRepository;
import dev.peerat.backend.utils.FormResponse;
import dev.peerat.backend.utils.Mail;
import dev.peerat.framework.Context;
import dev.peerat.framework.HttpReader;
import dev.peerat.framework.HttpWriter;
@ -43,18 +45,21 @@ public class MailConfirmation extends FormResponse {
private Encoder encoder;
private String gitToken;
private Map<String, Integer> playersWaiting;
private Mail mail;
public MailConfirmation(
DatabaseRepository databaseRepo,
Router<PeerAtUser> router,
String initUsersFilesPath,
String gitToken,
Map<String, Integer> playersWaiting){
Map<String, Integer> playersWaiting,
Mail mail){
this.databaseRepo = databaseRepo;
this.router = router;
this.usersFilesPath = initUsersFilesPath;
this.gitToken = gitToken;
this.playersWaiting = playersWaiting;
this.mail = mail;
try {
generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(4096);
@ -91,6 +96,10 @@ public class MailConfirmation extends FormResponse {
context.response(400);
return;
}
boolean pseudoAvailable = databaseRepo.checkPseudoAvailability(pseudo);
boolean emailAvailable = databaseRepo.checkEmailAvailability(email);
if(pseudoAvailable && emailAvailable){
if(code == checkCode.intValue()){
playersWaiting.remove(email);
int id = databaseRepo.register(pseudo, email, password, firstname, lastname, "", "", "");
@ -106,10 +115,27 @@ public class MailConfirmation extends FormResponse {
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{
context.response(400);
}
}else{
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 {