Database stuff

Mostly updating the database manager class. Added translations which don't work yet.
This commit is contained in:
samo_lego 2019-11-07 22:18:14 +01:00
parent b6c1ff6c3b
commit bac5c879fa
9 changed files with 94 additions and 31 deletions

View File

@ -24,6 +24,7 @@ public class SimpleAuth implements DedicatedServerModInitializer {
public void onInitializeServer() { public void onInitializeServer() {
// Info I guess :D // Info I guess :D
LOGGER.info("SimpleAuth mod by samo_lego."); LOGGER.info("SimpleAuth mod by samo_lego.");
// The support on discord was great! I really appreciate your help.
LOGGER.info("This mod wouldn't exist without the awesome Fabric Community. TYSM guys!"); LOGGER.info("This mod wouldn't exist without the awesome Fabric Community. TYSM guys!");
// Creating data directory (database is stored there) // Creating data directory (database is stored there)
@ -47,7 +48,7 @@ public class SimpleAuth implements DedicatedServerModInitializer {
BreakBlockCallback.EVENT.register((world, pos, state, player) -> AuthEventHandler.onBlockBroken(player)); BreakBlockCallback.EVENT.register((world, pos, state, player) -> AuthEventHandler.onBlockBroken(player));
// Connection to database // Connection to database
SimpleAuthDatabase.connect(); SimpleAuthDatabase.main();
} }
public static HashSet<ServerPlayerEntity> authenticatedUsers = new HashSet<>(); public static HashSet<ServerPlayerEntity> authenticatedUsers = new HashSet<>();

View File

@ -6,6 +6,7 @@ import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.LiteralText; import net.minecraft.text.LiteralText;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import org.samo_lego.simpleauth.SimpleAuth; import org.samo_lego.simpleauth.SimpleAuth;
import static com.mojang.brigadier.arguments.StringArgumentType.getString; import static com.mojang.brigadier.arguments.StringArgumentType.getString;
@ -15,7 +16,7 @@ import static net.minecraft.server.command.CommandManager.literal;
public class LoginCommand { public class LoginCommand {
private static LiteralText PleaseLogin = new LiteralText("§4Type /login <password> to login."); private static LiteralText PleaseLogin = new LiteralText("§4Type /login <password> to login.");
private static LiteralText EnterPassword = new LiteralText("§6You need to enter your password."); private static TranslatableText EnterPassword = new TranslatableText("command.simpleauth.password");
public static void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher) { public static void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher) {
// Registering the "/login" command // Registering the "/login" command

View File

@ -4,6 +4,10 @@ import com.google.common.io.Files;
import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.CommandDispatcher;
import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.LiteralText; import net.minecraft.text.LiteralText;
import net.minecraft.text.TranslatableText;
import org.samo_lego.simpleauth.database.SimpleAuthDatabase;
import java.util.Objects;
import static com.mojang.brigadier.arguments.StringArgumentType.getString; import static com.mojang.brigadier.arguments.StringArgumentType.getString;
import static com.mojang.brigadier.arguments.StringArgumentType.word; import static com.mojang.brigadier.arguments.StringArgumentType.word;
@ -12,8 +16,8 @@ import static net.minecraft.server.command.CommandManager.literal;
public class RegisterCommand { public class RegisterCommand {
private static LiteralText PleaseRegister = new LiteralText("§4Type /register <password> <password> to login."); private static TranslatableText PleaseRegister = new TranslatableText("§4Type /register <password> <password> to login.");
private static LiteralText EnterPassword = new LiteralText("§6You need to enter your password twice."); private static TranslatableText EnterPassword = new TranslatableText("command.simpleauth.passwordTwice");
public static void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher) { public static void registerCommand(CommandDispatcher<ServerCommandSource> dispatcher) {
@ -29,10 +33,11 @@ public class RegisterCommand {
})); }));
} }
// Registering our "register" command // Registering our "register" command (ik, sounds a bit confusing)
private static int register(ServerCommandSource source, String pass1, String pass2) { private static int register(ServerCommandSource source, String pass1, String pass2) {
if(pass1.equals(pass2)){ if(pass1.equals(pass2)){
// Hashing the password // Hashing the password
SimpleAuthDatabase.insert(Objects.requireNonNull(source.getEntity()).getUuidAsString(), source.getName(), pass1);
source.getMinecraftServer().getPlayerManager().broadcastChatMessage( source.getMinecraftServer().getPlayerManager().broadcastChatMessage(
new LiteralText(source.getName() + ", you have registered successfully!"), new LiteralText(source.getName() + ", you have registered successfully!"),
false false

View File

@ -1,17 +1,18 @@
package org.samo_lego.simpleauth.database; package org.samo_lego.simpleauth.database;
import java.sql.Connection; import org.apache.logging.log4j.LogManager;
import java.sql.DriverManager; import org.apache.logging.log4j.Logger;
import java.sql.SQLException;
import java.sql.Statement; import java.sql.*;
import java.util.UUID;
/** /**
*
* @author sqlitetutorial.net * @author sqlitetutorial.net
*/ */
public class SimpleAuthDatabase { public class SimpleAuthDatabase {
public static void connect() { private static final Logger LOGGER = LogManager.getLogger();
/*public static void connect() {
Connection conn = null; Connection conn = null;
try { try {
// db parameters // db parameters
@ -19,28 +20,78 @@ public class SimpleAuthDatabase {
// create a connection to the database // create a connection to the database
conn = DriverManager.getConnection(url); conn = DriverManager.getConnection(url);
// Creating database table
String sql = "CREATE TABLE IF NOT EXISTS users (\n" +
" `UserID` INTEGER PRIMARY KEY AUTOINCREMENT,\n" +
" `UUID` BINARY(16) NOT NULL,\n" +
" `Username` VARCHAR(16) NOT NULL,\n" +
" `Password` VARCHAR(64) NOT NULL,\n" +
" UNIQUE (`UUID`)\n" +
");";
Statement stmt = conn.createStatement();
stmt.execute(sql);
} catch (SQLException e) { } catch (SQLException e) {
System.out.println(e.getMessage()); System.out.println(e.getMessage());
} finally { } finally {
//Main?
try { try {
if (conn != null) { if (conn != null) {
conn.close(); conn.close();
// Main stuff here?
main(conn);
} }
} catch (SQLException ex) { } catch (SQLException ex) {
System.out.println(ex.getMessage()); System.out.println(ex.getMessage());
} }
} }
} }*/
private static void main(Connection conn) { private static Connection connect() {
String sql = ""; // SQLite connection string
try (Statement stmt = conn.createStatement()) { String url = "jdbc:sqlite:mods/SimpleAuth/players.db";
// create a new table Connection conn = null;
try {
conn = DriverManager.getConnection(url);
// Creating database table if it doesn't exist yet
String sql = "CREATE TABLE IF NOT EXISTS users (\n" +
" `UserID` INTEGER PRIMARY KEY AUTOINCREMENT,\n" +
" `UUID` BINARY(16) NOT NULL,\n" +
" `Username` VARCHAR(16) NOT NULL,\n" +
" `Password` VARCHAR(64) NOT NULL,\n" +
" UNIQUE (`UUID`)\n" +
");";
Statement stmt = conn.createStatement();
stmt.execute(sql); stmt.execute(sql);
} catch (SQLException e) { } catch (SQLException e) {
System.out.println(e.getMessage()); LOGGER.error(e.getMessage());
}
return conn;
}
public static void insert(String uuid, String username, String password) {
String sql = "INSERT INTO users(uuid, username, password) VALUES(?,?,?)";
try (Connection conn = connect();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, uuid);
pstmt.setString(2, username);
pstmt.setString(3, password);
pstmt.executeUpdate();
} catch (SQLException e) {
LOGGER.error(e.getMessage());
} }
} }
private static void disconnect(Connection conn) {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
LOGGER.error(ex.getMessage());
}
}
public static void main() {
Connection conn = connect();
}
} }

View File

@ -3,6 +3,7 @@ package org.samo_lego.simpleauth.event;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.LiteralText; import net.minecraft.text.LiteralText;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import org.samo_lego.simpleauth.SimpleAuth; import org.samo_lego.simpleauth.SimpleAuth;
@ -11,7 +12,7 @@ import org.samo_lego.simpleauth.SimpleAuth;
* and cancels them if they aren't authenticated * and cancels them if they aren't authenticated
*/ */
public class AuthEventHandler { public class AuthEventHandler {
private static LiteralText notAuthenticated = new LiteralText("§4You aren't authenticated."); private static TranslatableText notAuthenticated = new TranslatableText("command.simpleauth.notAuthenticated");
// Player joining the server // Player joining the server
public static void onPlayerJoin(ServerPlayerEntity player) { public static void onPlayerJoin(ServerPlayerEntity player) {

View File

@ -1,7 +0,0 @@
CREATE TABLE IF NOT EXISTS `{TABLE_NAME}` (
`UserID` INTEGER PRIMARY KEY AUTO_INCREMENT,
`UUID` BINARY(16) NOT NULL,
`Username` VARCHAR(16), NOT NULL,
`Password` VARCHAR(64) NOT NULL,
UNIQUE (`UUID`)
);

View File

@ -0,0 +1,8 @@
{
"command.simpleauth.password": "§6You need to enter your password!",
"command.simpleauth.passwordTwice": "§6You need to enter your password twice!",
"command.simpleauth.passwordMatch": "§6Passwords must match!",
"command.simpleauth.passwordWrong": "§4Wrong password!",
"command.simpleauth.notAuthenticated": "§4You are not authenticated!",
"command.simpleauth.authenticated": "§aYou are now authenticated."
}

View File

@ -0,0 +1,7 @@
CREATE TABLE IF NOT EXISTS users (
`UserID` INTEGER PRIMARY KEY AUTOINCREMENT,
`UUID` BINARY(16) NOT NULL,
`Username` VARCHAR(16) NOT NULL,
`Password` VARCHAR(64) NOT NULL,
UNIQUE (`UUID`)
);

View File

@ -1,4 +0,0 @@
{
"text.simpleauth.passwordmatch": "Passwords must match!",
"text.simpleauth.wrongpassword": "Wrong password!"
}