Fix leaderboard compare & add config for token expiration (in minutes) & advance on parser & Add Headers

This commit is contained in:
jeffcheasey88 2023-02-27 13:13:15 +01:00
parent 7e75c54092
commit 1eafa7e972
10 changed files with 55 additions and 11 deletions

View file

@ -21,6 +21,7 @@ public class Configuration {
private String ssl_keystorePasswd; private String ssl_keystorePasswd;
private String token_issuer; private String token_issuer;
private int token_expiration;
private File _file; private File _file;
@ -127,6 +128,10 @@ public class Configuration {
return this.token_issuer; return this.token_issuer;
} }
public int getTokenExpiration(){
return this.token_expiration;
}
public String getSslKeystorePasswd(){ public String getSslKeystorePasswd(){
return this.ssl_keystorePasswd; return this.ssl_keystorePasswd;
} }

View file

@ -49,7 +49,7 @@ public class Main {
Class.forName("com.mysql.cj.jdbc.Driver"); Class.forName("com.mysql.cj.jdbc.Driver");
Router router = new Router(new DatabaseRepository(config), config.getTokenIssuer()); Router router = new Router(new DatabaseRepository(config), config.getTokenIssuer(), config.getTokenExpiration());
router.setDefault(new Response(){ router.setDefault(new Response(){

View file

@ -93,16 +93,17 @@ public class Player implements Comparable<Player> {
} }
@Override @Override
public int compareTo(Player arg0) { public int compareTo(Player other) {
if (this == arg0) if (this == other)
return 0; return 0;
if (arg0 == null) if (other == null)
return -1; return -1;
int compare = Integer.compare(arg0.getTotalScore(), totalScore); int compare = Integer.compare(other.getTotalScore(), totalScore);
if (compare == 0) { if (compare == 0) {
compare = Integer.compare(arg0.getTotalCompletion(), totalCompletion); compare = Integer.compare(other.getTotalCompletion(), totalCompletion);
if (compare == 0) { if (compare == 0) {
compare = Integer.compare(totalTries, arg0.getTotalTries()); compare = Integer.compare(totalTries, other.getTotalTries());
if(compare == 0) compare = other.getPseudo().compareTo(pseudo);
} }
} }

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java; package be.jeffcheasey88.peeratcode.parser.java;
import java.lang.reflect.Modifier;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@ -43,6 +44,7 @@ public class Class {
content = content.substring(index); content = content.substring(index);
}else if(equals >= 0 && equals < braces){ }else if(equals >= 0 && equals < braces){
//variable with value //variable with value
System.out.println(content);
System.out.println("equals < braces"); System.out.println("equals < braces");
break; break;
}else{ }else{
@ -64,4 +66,9 @@ public class Class {
return this.name; return this.name;
} }
public void show(){
System.out.println(Modifier.toString(modifier)+" "+this.name+"{");
for(Variable v : this.vars) v.show(1);
System.out.println("}");
}
} }

View file

@ -1,12 +1,23 @@
package be.jeffcheasey88.peeratcode.parser.java; package be.jeffcheasey88.peeratcode.parser.java;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class JavaParser { public class JavaParser {
public static void main(String[] args) throws Exception {
File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\JavaBenjaminCompiler\\src\\be\\jeffcheasey88\\parser\\rework\\Import.java");
BufferedReader reader = new BufferedReader(new FileReader(file));
JavaParser parser = new JavaParser(reader);
parser.parse();
parser.show();
}
private Package pack; private Package pack;
private List<Import> imports; private List<Import> imports;
private Class clazz; private Class clazz;
@ -55,6 +66,14 @@ public class JavaParser {
return this.clazz; return this.clazz;
} }
public void show(){
System.out.println("package "+this.pack.getName()+";");
System.out.println();
for(Import i : this.imports) System.out.println("import "+i.getName()+";");
System.out.println();
this.clazz.show();
}
public static int getModifier(String modifier){ public static int getModifier(String modifier){
switch(modifier){ switch(modifier){
case "public": return Modifier.PUBLIC; case "public": return Modifier.PUBLIC;

View file

@ -1,5 +1,6 @@
package be.jeffcheasey88.peeratcode.parser.java; package be.jeffcheasey88.peeratcode.parser.java;
import java.lang.reflect.Modifier;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -38,4 +39,10 @@ public class Variable {
public String getType(){ public String getType(){
return this.type; return this.type;
} }
public void show(int tab){
String start = "";
for(int i = 0; i < tab; i++) start+="\t";
System.out.println(start+Modifier.toString(modifier)+" "+type+" "+name+";");
}
} }

View file

@ -158,7 +158,7 @@ public class DatabaseRepository {
ResultSet result = playersStmt.executeQuery(); ResultSet result = playersStmt.executeQuery();
SortedSet<Player> players = new TreeSet<Player>(); SortedSet<Player> players = new TreeSet<Player>();
Player tmpPlayer; Player tmpPlayer;
while (result.next()) { while (result.next()){
tmpPlayer = makePlayer(result); tmpPlayer = makePlayer(result);
tmpPlayer.setTotalScore(result.getInt("playerScore")); tmpPlayer.setTotalScore(result.getInt("playerScore"));
tmpPlayer.setTotalCompletion(result.getInt("playerCompletions")); tmpPlayer.setTotalCompletion(result.getInt("playerCompletions"));

View file

@ -41,6 +41,7 @@ public class Login implements Response {
if ((id = databaseRepo.login(pseudo, password)) >= 0){ if ((id = databaseRepo.login(pseudo, password)) >= 0){
HttpUtil.responseHeaders(writer, 200, HttpUtil.responseHeaders(writer, 200,
"Access-Control-Allow-Origin: *", "Access-Control-Allow-Origin: *",
"Access-Control-Expose-Headers: Authorization",
"Authorization: Bearer "+this.router.createAuthUser(id)); "Authorization: Bearer "+this.router.createAuthUser(id));
return; return;
} }

View file

@ -58,7 +58,9 @@ public class Register implements Response {
int id; int id;
if ((id = databaseRepo.register(pseudo, email, password, firstname, lastname, description, group, if ((id = databaseRepo.register(pseudo, email, password, firstname, lastname, description, group,
avatar)) >= 0) { avatar)) >= 0) {
HttpUtil.responseHeaders(writer, 200, "Access-Control-Allow-Origin: *", HttpUtil.responseHeaders(writer, 200,
"Access-Control-Allow-Origin: *",
"Access-Control-Expose-Headers: Authorization",
"Authorization: Bearer " + this.router.createAuthUser(id)); "Authorization: Bearer " + this.router.createAuthUser(id));
createFolderToSaveSourceCode(pseudo); createFolderToSaveSourceCode(pseudo);
return; return;

View file

@ -20,10 +20,12 @@ public class Router{
private RsaJsonWebKey rsaJsonWebKey; private RsaJsonWebKey rsaJsonWebKey;
private DatabaseRepository repo; private DatabaseRepository repo;
private String token_issuer; private String token_issuer;
private int token_expiration;
public Router(DatabaseRepository repo, String token_issuer) throws Exception{ public Router(DatabaseRepository repo, String token_issuer, int token_expiration) throws Exception{
this.repo = repo; this.repo = repo;
this.token_issuer = token_issuer; this.token_issuer = token_issuer;
this.token_expiration = token_expiration;
this.responses = new ArrayList<>(); this.responses = new ArrayList<>();
this.rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048); this.rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048);
} }
@ -64,7 +66,7 @@ public class Router{
public String createAuthUser(int id) throws JoseException{ public String createAuthUser(int id) throws JoseException{
JwtClaims claims = new JwtClaims(); JwtClaims claims = new JwtClaims();
claims.setIssuer(token_issuer); // who creates the token and signs it claims.setIssuer(token_issuer); // who creates the token and signs it
claims.setExpirationTimeMinutesInTheFuture(10); // time when the token will expire (10 minutes from now) claims.setExpirationTimeMinutesInTheFuture(token_expiration);
claims.setGeneratedJwtId(); // a unique identifier for the token claims.setGeneratedJwtId(); // a unique identifier for the token
claims.setIssuedAtToNow(); // when the token was issued/created (now) claims.setIssuedAtToNow(); // when the token was issued/created (now)
claims.setNotBeforeMinutesInThePast(2); // time before which the token is not yet valid (2 minutes ago) claims.setNotBeforeMinutesInThePast(2); // time before which the token is not yet valid (2 minutes ago)