diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..2baf4bb --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +FlightScoreBackend \ No newline at end of file diff --git a/.idea/db-forest-config.xml b/.idea/db-forest-config.xml index fd9c831..cf0b1b1 100644 --- a/.idea/db-forest-config.xml +++ b/.idea/db-forest-config.xml @@ -1,5 +1,13 @@ + + . + ---------------------------------------- + 1:0:e0f49905-9df6-459a-a57c-731edb2c1607 + 2:0:74720f71-b717-4c46-a783-e93fc40a8785 + 3:0:c2ae7de6-543e-4eed-8b31-a13cb00693a8 + . + diff --git a/.idea/misc.xml b/.idea/misc.xml index 11a473f..f4a6582 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,7 +5,7 @@ - + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/src/main/java/dev/coph/flightscore/backend/Backend.java b/src/main/java/dev/coph/flightscore/backend/Backend.java index 7ce8927..858dd9d 100644 --- a/src/main/java/dev/coph/flightscore/backend/Backend.java +++ b/src/main/java/dev/coph/flightscore/backend/Backend.java @@ -27,9 +27,9 @@ public class Backend { private final ProviderManager providerManager; - private PermissionProvider permissionProvider; - private RoleProvider roleProvider; - private UserProvider userProvider; + private final PermissionProvider permissionProvider; + private final RoleProvider roleProvider; + private final UserProvider userProvider; public Backend() { diff --git a/src/main/java/dev/coph/flightscore/backend/actionResult/LoginActionResult.java b/src/main/java/dev/coph/flightscore/backend/actionResult/LoginActionResult.java index 46b3c2e..62dbcc6 100644 --- a/src/main/java/dev/coph/flightscore/backend/actionResult/LoginActionResult.java +++ b/src/main/java/dev/coph/flightscore/backend/actionResult/LoginActionResult.java @@ -6,7 +6,7 @@ import lombok.experimental.Accessors; @Getter @Accessors(fluent = true) -public class LoginActionResult extends ActionResult{ +public class LoginActionResult extends ActionResult { private final User user; @@ -19,6 +19,7 @@ public class LoginActionResult extends ActionResult{ this.accessToken = null; this.refreshToken = null; } + public LoginActionResult(User user, String accessToken, String refreshToken) { super(true, "Login successful"); this.user = user; diff --git a/src/main/java/dev/coph/flightscore/backend/requestHandler/auth/LoginRequestHandler.java b/src/main/java/dev/coph/flightscore/backend/requestHandler/auth/LoginRequestHandler.java index 3e483d6..a5d3114 100644 --- a/src/main/java/dev/coph/flightscore/backend/requestHandler/auth/LoginRequestHandler.java +++ b/src/main/java/dev/coph/flightscore/backend/requestHandler/auth/LoginRequestHandler.java @@ -7,7 +7,6 @@ import dev.coph.simplerequest.body.JsonBody; import dev.coph.simplerequest.handler.RequestHandler; import dev.coph.simplerequest.handler.RequestMethod; import dev.coph.simplerequest.util.ResponseUtil; -import lombok.extern.slf4j.Slf4j; import org.eclipse.jetty.http.HttpCookie; import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.server.Response; @@ -15,9 +14,7 @@ import org.eclipse.jetty.util.Callback; import org.json.JSONObject; import java.io.IOException; -import java.util.Map; -@Slf4j public class LoginRequestHandler { private final Logger logger = Logger.of("RH - Login"); private final Backend backend; diff --git a/src/main/java/dev/coph/flightscore/backend/user/User.java b/src/main/java/dev/coph/flightscore/backend/user/User.java index f7845b3..2066535 100644 --- a/src/main/java/dev/coph/flightscore/backend/user/User.java +++ b/src/main/java/dev/coph/flightscore/backend/user/User.java @@ -11,14 +11,14 @@ import java.util.Locale; @Accessors(fluent = true) public class User { - private ULID id; - private String firstName; - private String lastName; - private String email; - private String phoneNumber; - private Locale country; + private final ULID id; + private final String firstName; + private final String lastName; + private final String email; + private final String phoneNumber; + private final Locale country; private Role role; - private boolean blocked; + private final boolean blocked; public User(ULID id, String firstname, String lastname, String email, String phoneNumber, Locale country, boolean blocked) { this.id = id; diff --git a/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java b/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java index ea0c636..b4b146c 100644 --- a/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java +++ b/src/main/java/dev/coph/flightscore/backend/user/UserProvider.java @@ -11,7 +11,6 @@ import dev.coph.flightscore.backend.utils.TokenGenerator; import dev.coph.simpleauthentication.cryptography.CCrypt; import dev.coph.simpleauthentication.jwt.JWT; import dev.coph.simpleauthentication.jwt.JwtException; -import dev.coph.simpleauthentication.jwt.algorithm.EdDSAAlgorithm; import dev.coph.simpleauthentication.jwt.algorithm.HS256Algorithm; import dev.coph.simpleauthentication.jwt.algorithm.JwtSignAlgorithm; import dev.coph.simplecache.Cache; @@ -23,24 +22,19 @@ import dev.coph.simplesql.database.attributes.CreateMethod; import dev.coph.simplesql.database.attributes.DataType; import dev.coph.simplesql.query.Query; import dev.coph.simpleutilities.ulid.ULID; -import lombok.extern.slf4j.Slf4j; import org.json.JSONArray; -import java.io.File; import java.sql.Timestamp; import java.time.Duration; import java.time.Instant; -import java.util.Arrays; import java.util.List; import java.util.Locale; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; -@Slf4j public class UserProvider implements Provider { - private Logger logger = Logger.of("UserProvider"); private final Backend backend; - + private final Logger logger = Logger.of("UserProvider"); private JwtSignAlgorithm jwtSignAlgorithm; private long JWT_EXPIRATION_TIME; @@ -253,6 +247,30 @@ public class UserProvider implements Provider { return new LoginActionResult(user, accessToken, refreshToken); } + private String createAccessToken(User user, long expiresAt) { + try { + JWT.Builder builder = new JWT.Builder() + .algorithm(jwtSignAlgorithm) + .audience("flightscore-api") + .issuer("flightscore-api") + .subject(user.id().toString()) + .expiresAt(expiresAt / 1000) + .issuedAt(System.currentTimeMillis() / 1000); + + if (user.role() != null) { + JSONArray permissions = new JSONArray(); + user.role().permissions().forEach(permission -> permissions.put(permission.name())); + builder.claim("permission", permissions.toString()); + builder.claim("role", user.role().id().toString()); + } + + return builder.sign(); + } catch (JwtException e) { + logger.error("Error creating JWT", e); + } + return null; + } + public LoginActionResult refreshToken(String refreshToken) { if (refreshToken == null || refreshToken.isEmpty()) { return new LoginActionResult(false, "Invalid refresh token"); @@ -368,28 +386,4 @@ public class UserProvider implements Provider { return exists.get(); } - private String createAccessToken(User user, long expiresAt) { - try { - JWT.Builder builder = new JWT.Builder() - .algorithm(jwtSignAlgorithm) - .audience("flightscore-api") - .issuer("flightscore-api") - .subject(user.id().toString()) - .expiresAt(expiresAt / 1000) - .issuedAt(System.currentTimeMillis() / 1000); - - if (user.role() != null) { - JSONArray permissions = new JSONArray(); - user.role().permissions().forEach(permission -> permissions.put(permission.name())); - builder.claim("permission", permissions.toString()); - builder.claim("role", user.role().id().toString()); - } - - return builder.sign(); - } catch (JwtException e) { - logger.error("Error creating JWT", e); - } - return null; - } - } diff --git a/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java b/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java index 2d6c6ee..a2e18d1 100644 --- a/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java +++ b/src/main/java/dev/coph/flightscore/backend/user/permission/Permission.java @@ -7,12 +7,11 @@ import lombok.experimental.Accessors; @Getter @Accessors(fluent = true) public class Permission { + private final ULID id; + private final String name; public Permission(ULID id, String name) { this.id = id; this.name = name; } - private ULID id; - private String name; - } diff --git a/src/main/java/dev/coph/flightscore/backend/user/permission/PermissionProvider.java b/src/main/java/dev/coph/flightscore/backend/user/permission/PermissionProvider.java index ab2389c..dfe6b0e 100644 --- a/src/main/java/dev/coph/flightscore/backend/user/permission/PermissionProvider.java +++ b/src/main/java/dev/coph/flightscore/backend/user/permission/PermissionProvider.java @@ -38,7 +38,6 @@ public class PermissionProvider implements Provider { .column("id", DataType.BINARY, 26, true) .column("name", DataType.VARCHAR, 255) .primaryKey(List.of("id")); - ; query.query(tableCreate); } diff --git a/src/main/java/dev/coph/flightscore/backend/user/role/Role.java b/src/main/java/dev/coph/flightscore/backend/user/role/Role.java index 28ff0a2..b3a8e5a 100644 --- a/src/main/java/dev/coph/flightscore/backend/user/role/Role.java +++ b/src/main/java/dev/coph/flightscore/backend/user/role/Role.java @@ -11,15 +11,14 @@ import java.util.HashSet; @Accessors(fluent = true) public class Role { + private final ULID id; + private final String name; + private final boolean defaultRole; + private final HashSet permissions = new HashSet<>(); public Role(ULID id, String name, boolean defaultRole) { this.id = id; this.name = name; this.defaultRole = defaultRole; } - private ULID id; - private String name; - private boolean defaultRole; - private HashSet permissions = new HashSet<>(); - } diff --git a/src/main/java/dev/coph/flightscore/backend/user/role/RoleProvider.java b/src/main/java/dev/coph/flightscore/backend/user/role/RoleProvider.java index f90bd09..8ae336b 100644 --- a/src/main/java/dev/coph/flightscore/backend/user/role/RoleProvider.java +++ b/src/main/java/dev/coph/flightscore/backend/user/role/RoleProvider.java @@ -11,7 +11,6 @@ import dev.coph.simplesql.query.Query; import dev.coph.simpleutilities.ulid.ULID; import lombok.Getter; import lombok.experimental.Accessors; -import org.checkerframework.checker.units.qual.C; import java.util.HashMap; import java.util.List; @@ -19,12 +18,11 @@ import java.util.List; @Accessors(fluent = true) public class RoleProvider implements Provider { private final Logger logger = Logger.of("RoleProvider"); - private HashMap roles = new HashMap<>(); + private final Backend backend; + private final HashMap roles = new HashMap<>(); @Getter private Role defaultRole; - private final Backend backend; - public RoleProvider(Backend backend) { this.backend = backend; } diff --git a/src/main/java/dev/coph/flightscore/backend/utils/Hash.java b/src/main/java/dev/coph/flightscore/backend/utils/Hash.java index e0885b0..4568917 100644 --- a/src/main/java/dev/coph/flightscore/backend/utils/Hash.java +++ b/src/main/java/dev/coph/flightscore/backend/utils/Hash.java @@ -1,7 +1,6 @@ package dev.coph.flightscore.backend.utils; import dev.coph.simplelogger.GenericLogger; -import dev.coph.simplelogger.Logger; import java.nio.charset.StandardCharsets; import java.security.MessageDigest;