diff --git a/LaunchServer/source/auth/handler/PostgreSQLAuthHandler.java b/LaunchServer/source/auth/handler/PostgreSQLAuthHandler.java index 4fe8921..35cf36f 100644 --- a/LaunchServer/source/auth/handler/PostgreSQLAuthHandler.java +++ b/LaunchServer/source/auth/handler/PostgreSQLAuthHandler.java @@ -6,6 +6,7 @@ import launcher.serialize.config.entry.BooleanConfigEntry; import launcher.serialize.config.entry.StringConfigEntry; import launchserver.auth.PostgreSQLSourceConfig; +import org.postgresql.util.PGobject; import java.io.IOException; import java.sql.*; @@ -41,11 +42,11 @@ block.getEntryValue("serverIDColumn", StringConfigEntry.class)); // Prepare SQL queries - queryByUUIDSQL = String.format("SELECT %s, %s, %s, %s FROM %s WHERE %s=? LIMIT 1", + queryByUUIDSQL = String.format("SELECT %s, %s, %s, %s FROM %s WHERE %s=?", uuidColumn, usernameColumn, accessTokenColumn, serverIDColumn, table, uuidColumn); - queryByUsernameSQL = String.format("SELECT %s, %s, %s, %s FROM %s WHERE %s=? LIMIT 1", + queryByUsernameSQL = String.format("SELECT %s, %s, %s, %s FROM %s WHERE %s=?", uuidColumn, usernameColumn, accessTokenColumn, serverIDColumn, table, usernameColumn); - updateAuthSQL = String.format("UPDATE %s SET %s=?, %s=?, %s=NULL WHERE %s=? LIMIT 1", + updateAuthSQL = String.format("UPDATE %s SET %s=?, %s=?, %s=NULL WHERE %s=?", table, usernameColumn, accessTokenColumn, serverIDColumn, uuidColumn); updateServerIDSQL = String.format("UPDATE %s SET %s=? WHERE %s=? LIMIT 1", table, serverIDColumn, uuidColumn); @@ -83,7 +84,7 @@ @Override protected Entry fetchEntry(UUID uuid) throws IOException { - return query(queryByUUIDSQL, uuid.toString()); + return query(queryByUUIDSQL, uuid); } @Override @@ -92,7 +93,11 @@ PreparedStatement s = c.prepareStatement(updateAuthSQL)) { s.setString(1, username); // Username case s.setString(2, accessToken); - s.setString(3, uuid.toString()); + + PGobject uuidObject = new PGobject(); + uuidObject.setType("uuid"); + uuidObject.setValue(uuid.toString()); + s.setObject(3, uuidObject); // Execute update s.setQueryTimeout(PostgreSQLSourceConfig.TIMEOUT); @@ -107,7 +112,10 @@ try (Connection c = postgreSQLHolder.getConnection(); PreparedStatement s = c.prepareStatement(updateServerIDSQL)) { s.setString(1, serverID); - s.setString(2, uuid.toString()); + PGobject uuidObject = new PGobject(); + uuidObject.setType("uuid"); + uuidObject.setValue(uuid.toString()); + s.setObject(2, uuidObject); // Execute update s.setQueryTimeout(PostgreSQLSourceConfig.TIMEOUT); @@ -131,4 +139,23 @@ throw new IOException(e); } } + + private Entry query(String sql, UUID value) throws IOException { + try (Connection c = postgreSQLHolder.getConnection(); + PreparedStatement s = c.prepareStatement(sql)) { + PGobject uuidObject = new PGobject(); + uuidObject.setType("uuid"); + uuidObject.setValue(value.toString()); + + s.setObject(1, uuidObject); + + // Execute query + s.setQueryTimeout(PostgreSQLSourceConfig.TIMEOUT); + try (ResultSet set = s.executeQuery()) { + return constructEntry(set); + } + } catch (SQLException e) { + throw new IOException(e); + } + } } \ No newline at end of file diff --git a/LaunchServer/source/auth/provider/PostgreSQLAuthProvider.java b/LaunchServer/source/auth/provider/PostgreSQLAuthProvider.java index c331d7f..eefa909 100644 --- a/LaunchServer/source/auth/provider/PostgreSQLAuthProvider.java +++ b/LaunchServer/source/auth/provider/PostgreSQLAuthProvider.java @@ -36,7 +36,7 @@ { try (Connection c = postgreSQLHolder.getConnection(); PreparedStatement s = c.prepareStatement(query)) { - String[] replaceParams = {"login", login, "password", password}; + String[] replaceParams = {"login", login, "password", password, "ip", ip}; for (int i = 0; i < queryParams.length; i++) { s.setString(i + 1, CommonHelper.replace(queryParams[i], replaceParams));