Added login request handler
This commit is contained in:
Generated
+6
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DeveloperToolsToolWindowSettingsV1" lastSelectedContentNodeId="base64-encoder-decoder" pluginVersion="7.1.0">
|
||||
<developerToolsConfigurations />
|
||||
</component>
|
||||
</project>
|
||||
@@ -2,6 +2,7 @@ package dev.coph.flightscore.backend;
|
||||
|
||||
import dev.coph.flightscore.backend.config.Config;
|
||||
import dev.coph.flightscore.backend.provider.ProviderManager;
|
||||
import dev.coph.flightscore.backend.requestHandler.auth.LoginRequestHandler;
|
||||
import dev.coph.flightscore.backend.user.UserProvider;
|
||||
import dev.coph.flightscore.backend.user.permission.PermissionProvider;
|
||||
import dev.coph.flightscore.backend.user.role.RoleProvider;
|
||||
@@ -76,6 +77,7 @@ public class Backend {
|
||||
logger.success("Database started!");
|
||||
|
||||
logger.info("Loading routes...");
|
||||
webServer.registerRequestHandler(new LoginRequestHandler(this));
|
||||
|
||||
logger.success("Routes loaded!");
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.coph.flightscore.backend.action.result;
|
||||
package dev.coph.flightscore.backend.actionResult;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.experimental.Accessors;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package dev.coph.flightscore.backend.action.result;
|
||||
package dev.coph.flightscore.backend.actionResult;
|
||||
|
||||
import dev.coph.flightscore.backend.user.User;
|
||||
import lombok.Getter;
|
||||
@@ -16,6 +16,7 @@ public class ProviderManager {
|
||||
public void createAllDatabaseTables() {
|
||||
Query query = new Query(backend.databaseAdapter());
|
||||
providers.values().stream().sorted((a, b) -> Integer.compare(b.priority(), a.priority())).forEach(provider -> provider.createDatabaseTables(query));
|
||||
query.execute();
|
||||
}
|
||||
|
||||
public void enableAllProviders() {
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package dev.coph.flightscore.backend.requestHandler.auth;
|
||||
|
||||
import dev.coph.flightscore.backend.Backend;
|
||||
import dev.coph.simplelogger.Logger;
|
||||
import dev.coph.simplerequest.body.Body;
|
||||
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.HttpStatus;
|
||||
import org.eclipse.jetty.server.Response;
|
||||
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;
|
||||
|
||||
|
||||
public LoginRequestHandler(Backend backend) {
|
||||
this.backend = backend;
|
||||
}
|
||||
|
||||
|
||||
@RequestHandler(
|
||||
path = "/auth/login",
|
||||
method = RequestMethod.POST
|
||||
)
|
||||
public void handle(Response response, Callback callback, Body body) {
|
||||
JsonBody json;
|
||||
try {
|
||||
json = body.asJSON();
|
||||
} catch (IOException e) {
|
||||
logger.error("Failed to parse JSON body", e);
|
||||
response.setStatus(HttpStatus.BAD_REQUEST_400);
|
||||
ResponseUtil.writeAnswer(response, callback, "Invalid body");
|
||||
return;
|
||||
}
|
||||
|
||||
String email = json.getString("email");
|
||||
String password = json.getString("password");
|
||||
|
||||
if (email == null || password == null) {
|
||||
response.setStatus(HttpStatus.BAD_REQUEST_400);
|
||||
ResponseUtil.writeAnswer(response, callback, "Missing email or password");
|
||||
return;
|
||||
}
|
||||
var loginResponse = backend.userProvider().login(email, password);
|
||||
|
||||
if (!loginResponse.success()) {
|
||||
ResponseUtil.writeAnswer(response, callback, loginResponse.message());
|
||||
return;
|
||||
}
|
||||
|
||||
var responseObject = new JSONObject();
|
||||
|
||||
responseObject.put("accessToken", loginResponse.accessToken());
|
||||
responseObject.put("refreshToken", loginResponse.refreshToken());
|
||||
|
||||
ResponseUtil.writeSuccessfulAnswer(response, callback, responseObject);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.coph.flightscore.backend.user;
|
||||
|
||||
import dev.coph.flightscore.backend.Backend;
|
||||
import dev.coph.flightscore.backend.action.result.LoginActionResult;
|
||||
import dev.coph.flightscore.backend.actionResult.LoginActionResult;
|
||||
import dev.coph.flightscore.backend.config.Config;
|
||||
import dev.coph.flightscore.backend.provider.Provider;
|
||||
import dev.coph.flightscore.backend.user.role.Role;
|
||||
|
||||
@@ -47,7 +47,7 @@ public class RoleProvider implements Provider {
|
||||
.table("roles")
|
||||
.column("id", DataType.BINARY, 26, true)
|
||||
.column("name", DataType.VARCHAR, 255)
|
||||
.column(new Column("default", DataType.BOOLEAN, true).defaultValue(false))
|
||||
.column(new Column("is_default", DataType.BOOLEAN, true).defaultValue(false))
|
||||
.primaryKey(List.of("id"));
|
||||
query.query(tableCreate);
|
||||
|
||||
@@ -70,7 +70,7 @@ public class RoleProvider implements Provider {
|
||||
srs.forEach(resultSet -> {
|
||||
var roleIdBytes = resultSet.getBytes("id");
|
||||
var roleName = resultSet.getString("name");
|
||||
var isDefault = resultSet.getBoolean("default");
|
||||
var isDefault = resultSet.getBoolean("is_default");
|
||||
var roleId = new ULID(roleIdBytes);
|
||||
Role role = new Role(roleId, roleName, isDefault);
|
||||
roles.put(roleId, role);
|
||||
|
||||
Reference in New Issue
Block a user