Checking if user is registered, finalising leveldb.
This commit is contained in:
parent
65a2c5de15
commit
1083665fac
|
@ -54,7 +54,7 @@ public class ChangepwCommand {
|
|||
player.sendMessage(cannotChangePassword);
|
||||
return 0;
|
||||
}
|
||||
else if (AuthHelper.checkPass(player.getUuidAsString(), oldPass.toCharArray())) {
|
||||
else if (AuthHelper.checkPass(player.getUuidAsString(), oldPass.toCharArray()) == 1) {
|
||||
SimpleAuth.db.update(
|
||||
player.getUuidAsString(),
|
||||
AuthHelper.hashPass(newPass.toCharArray())
|
||||
|
|
|
@ -18,6 +18,7 @@ public class LoginCommand {
|
|||
private static Text enterPassword = new LiteralText(SimpleAuth.config.lang.enterPassword);
|
||||
private static Text wrongPassword = new LiteralText(SimpleAuth.config.lang.wrongPassword);
|
||||
private static Text alreadyAuthenticated = new LiteralText(SimpleAuth.config.lang.alreadyAuthenticated);
|
||||
private static Text notRegistered = new LiteralText(SimpleAuth.config.lang.notRegistered);
|
||||
private static Text loginTriesExceeded = new LiteralText(SimpleAuth.config.lang.loginTriesExceeded);
|
||||
private static Text successfullyAuthenticated = new LiteralText(SimpleAuth.config.lang.successfullyAuthenticated);
|
||||
private static int maxLoginTries = SimpleAuth.config.main.maxLoginTries;
|
||||
|
@ -48,16 +49,14 @@ public class LoginCommand {
|
|||
player.networkHandler.disconnect(loginTriesExceeded);
|
||||
return 0;
|
||||
}
|
||||
else if(SimpleAuth.config.main.enableGlobalPassword) {
|
||||
if (AuthHelper.checkPass(null, pass.toCharArray())) {
|
||||
SimpleAuth.authenticatePlayer(player, successfullyAuthenticated);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (AuthHelper.checkPass(player.getUuidAsString(), pass.toCharArray())) {
|
||||
else if (AuthHelper.checkPass(player.getUuidAsString(), pass.toCharArray()) == 1) {
|
||||
SimpleAuth.authenticatePlayer(player, successfullyAuthenticated);
|
||||
return 1;
|
||||
}
|
||||
else if(AuthHelper.checkPass(player.getUuidAsString(), pass.toCharArray()) == -1) {
|
||||
player.sendMessage(notRegistered);
|
||||
return 0;
|
||||
}
|
||||
// Kicking the player out
|
||||
else if(maxLoginTries == 1) {
|
||||
SimpleAuth.deauthenticatePlayer(player);
|
||||
|
|
|
@ -45,7 +45,7 @@ public class UnregisterCommand {
|
|||
player.sendMessage(cannotUnregister);
|
||||
return 0;
|
||||
}
|
||||
else if (AuthHelper.checkPass(player.getUuidAsString(), pass.toCharArray())) {
|
||||
else if (AuthHelper.checkPass(player.getUuidAsString(), pass.toCharArray()) == 1) {
|
||||
SimpleAuth.db.delete(player.getUuidAsString());
|
||||
player.sendMessage(accountDeleted);
|
||||
return 1;
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.samo_lego.simpleauth.database;
|
|||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.iq80.leveldb.DB;
|
||||
import org.iq80.leveldb.DBException;
|
||||
import org.iq80.leveldb.Options;
|
||||
import org.samo_lego.simpleauth.SimpleAuth;
|
||||
|
||||
|
@ -41,9 +42,8 @@ public class SimpleAuthDatabase {
|
|||
|
||||
// When player registers, we insert the data into DB
|
||||
public boolean registerUser(String uuid, String password) {
|
||||
System.out.println(Arrays.toString(levelDBStore.get(bytes("UUID:" + uuid))));
|
||||
try {
|
||||
if(levelDBStore.get(bytes("UUID:" + uuid)) == null) {
|
||||
if(!this.isRegistered(uuid)) {
|
||||
levelDBStore.put(bytes("UUID:" + uuid), bytes("password:" + password));
|
||||
return true;
|
||||
}
|
||||
|
@ -54,6 +54,16 @@ public class SimpleAuthDatabase {
|
|||
}
|
||||
}
|
||||
|
||||
// Checks if user is registered
|
||||
private boolean isRegistered(String uuid) {
|
||||
try {
|
||||
return levelDBStore.get(bytes("UUID:" + uuid)) != null;
|
||||
} catch (DBException e) {
|
||||
LOGGER.error("[SimpleAuth] " + e.getMessage());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Deletes row containing the username provided
|
||||
public void delete(String uuid) {
|
||||
try {
|
||||
|
@ -74,13 +84,12 @@ public class SimpleAuthDatabase {
|
|||
|
||||
// Gets the hashed password from DB
|
||||
public String getPassword(String uuid){
|
||||
String password = null;
|
||||
try {
|
||||
// Gets password from db and removes "password:" prefix from it
|
||||
password = new String(levelDBStore.get(bytes("UUID:" + uuid))).substring(9);
|
||||
if(this.isRegistered(uuid)) // Gets password from db and removes "password:" prefix from it
|
||||
return new String(levelDBStore.get(bytes("UUID:" + uuid))).substring(9);
|
||||
} catch (Error e) {
|
||||
LOGGER.error("[SimpleAuth] Error getting password: " + e.getMessage());
|
||||
}
|
||||
return password;
|
||||
return "";
|
||||
}
|
||||
}
|
|
@ -90,6 +90,7 @@ public class AuthConfig {
|
|||
public String accountDeleted = "§aYour account was successfully deleted!";
|
||||
public String configurationReloaded = "§aConfiguration file was reloaded successfully.";
|
||||
public String successfulPortalRescue = "§aYou were rescued from nether portal successfully!";
|
||||
public String notRegistered = "§6This account is not yet registered! Type `/register` first";
|
||||
}
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final Gson gson = new GsonBuilder()
|
||||
|
|
|
@ -12,15 +12,17 @@ public class AuthHelper {
|
|||
// Creating the instance
|
||||
private static Argon2 argon2 = Argon2Factory.create();
|
||||
|
||||
public static boolean checkPass(String uuid, char[] pass) {
|
||||
// Returns 1 if password is correct, 0 if not
|
||||
// and -1 if user is not registered yet
|
||||
public static int checkPass(String uuid, char[] pass) {
|
||||
if(SimpleAuth.config.main.enableGlobalPassword) {
|
||||
// We have global password enabled
|
||||
try {
|
||||
return argon2.verify(SimpleAuth.config.main.globalPassword, pass);
|
||||
return argon2.verify(SimpleAuth.config.main.globalPassword, pass) ? 1 : 0;
|
||||
}
|
||||
catch (Error e) {
|
||||
LOGGER.error("[SimpleAuth] Argon2 error: " + e);
|
||||
return false;
|
||||
return 0;
|
||||
} finally {
|
||||
// Wipe confidential data
|
||||
argon2.wipeArray(pass);
|
||||
|
@ -30,11 +32,13 @@ public class AuthHelper {
|
|||
try {
|
||||
// Hashed password from DB
|
||||
String hashed = SimpleAuth.db.getPassword(uuid);
|
||||
if(hashed.equals(""))
|
||||
return -1; // User is not yet registered
|
||||
// Verify password
|
||||
return argon2.verify(hashed, pass);
|
||||
return argon2.verify(hashed, pass) ? 1 : 0;
|
||||
} catch (Error e) {
|
||||
LOGGER.error("[SimpleAuth] error: " + e);
|
||||
return false;
|
||||
return 0;
|
||||
} finally {
|
||||
// Wipe confidential data
|
||||
argon2.wipeArray(pass);
|
||||
|
|
Loading…
Reference in New Issue