diff options
Diffstat (limited to 'src/main/java/net/elytrium/limboauth/model/RegisteredPlayer.java')
| -rw-r--r-- | src/main/java/net/elytrium/limboauth/model/RegisteredPlayer.java | 108 |
1 files changed, 90 insertions, 18 deletions
diff --git a/src/main/java/net/elytrium/limboauth/model/RegisteredPlayer.java b/src/main/java/net/elytrium/limboauth/model/RegisteredPlayer.java index 052b9f0..0b0b85c 100644 --- a/src/main/java/net/elytrium/limboauth/model/RegisteredPlayer.java +++ b/src/main/java/net/elytrium/limboauth/model/RegisteredPlayer.java @@ -17,8 +17,14 @@ package net.elytrium.limboauth.model; +import at.favre.lib.crypto.bcrypt.BCrypt; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; +import com.velocitypowered.api.proxy.Player; +import java.net.InetSocketAddress; +import java.util.Locale; +import java.util.UUID; +import net.elytrium.limboauth.Settings; @DatabaseTable(tableName = "AUTH") public class RegisteredPlayer { @@ -33,6 +39,9 @@ public class RegisteredPlayer { public static final String LOGIN_DATE_FIELD = "LOGINDATE"; public static final String UUID_FIELD = "UUID"; public static final String PREMIUM_UUID_FIELD = "PREMIUMUUID"; + public static final String TOKEN_ISSUED_AT_FIELD = "ISSUEDTIME"; + + private static final BCrypt.Hasher HASHER = BCrypt.withDefaults(); @DatabaseField(canBeNull = false, columnName = NICKNAME_FIELD) private String nickname; @@ -41,7 +50,7 @@ public class RegisteredPlayer { private String lowercaseNickname; @DatabaseField(canBeNull = false, columnName = HASH_FIELD) - private String hash; + private String hash = ""; @DatabaseField(columnName = IP_FIELD) private String ip; @@ -50,20 +59,24 @@ public class RegisteredPlayer { private String totpToken; @DatabaseField(columnName = REG_DATE_FIELD) - private Long regDate; + private Long regDate = System.currentTimeMillis(); @DatabaseField(columnName = UUID_FIELD) - private String uuid; + private String uuid = ""; @DatabaseField(columnName = RegisteredPlayer.PREMIUM_UUID_FIELD) - private String premiumUuid; + private String premiumUuid = ""; @DatabaseField(columnName = LOGIN_IP_FIELD) private String loginIp; @DatabaseField(columnName = LOGIN_DATE_FIELD) - private Long loginDate; + private Long loginDate = System.currentTimeMillis(); + + @DatabaseField(columnName = TOKEN_ISSUED_AT_FIELD) + private Long tokenIssuedAt = System.currentTimeMillis(); + @Deprecated public RegisteredPlayer(String nickname, String lowercaseNickname, String hash, String ip, String totpToken, Long regDate, String uuid, String premiumUuid, String loginIp, Long loginDate) { this.nickname = nickname; @@ -78,68 +91,113 @@ public class RegisteredPlayer { this.loginDate = loginDate; } + public RegisteredPlayer(Player player) { + this(player.getUsername(), player.getUniqueId(), player.getRemoteAddress()); + } + + public RegisteredPlayer(String nickname, UUID uuid, InetSocketAddress ip) { + this(nickname, uuid.toString(), ip.getAddress().getHostAddress()); + } + + public RegisteredPlayer(String nickname, String uuid, String ip) { + this.nickname = nickname; + this.lowercaseNickname = nickname.toLowerCase(Locale.ROOT); + this.uuid = uuid; + this.ip = ip; + this.loginIp = ip; + } + public RegisteredPlayer() { } - public void setNickname(String nickname) { + public static String genHash(String password) { + return HASHER.hashToString(Settings.IMP.MAIN.BCRYPT_COST, password.toCharArray()); + } + + public RegisteredPlayer setNickname(String nickname) { this.nickname = nickname; + this.lowercaseNickname = nickname.toLowerCase(Locale.ROOT); + + return this; } public String getNickname() { return this.nickname == null ? this.lowercaseNickname : this.nickname; } - public void setLowercaseNickname(String lowercaseNickname) { - this.lowercaseNickname = lowercaseNickname; - } - public String getLowercaseNickname() { return this.lowercaseNickname; } - public void setHash(String hash) { + public RegisteredPlayer setPassword(String password) { + this.hash = genHash(password); + this.tokenIssuedAt = System.currentTimeMillis(); + + return this; + } + + public RegisteredPlayer setHash(String hash) { this.hash = hash; + this.tokenIssuedAt = System.currentTimeMillis(); + + return this; } public String getHash() { return this.hash == null ? "" : this.hash; } - public void setIP(String ip) { + public RegisteredPlayer setIP(String ip) { this.ip = ip; + + return this; } public String getIP() { return this.ip == null ? "" : this.ip; } - public void setTotpToken(String totpToken) { + public RegisteredPlayer setTotpToken(String totpToken) { this.totpToken = totpToken; + + return this; } public String getTotpToken() { return this.totpToken == null ? "" : this.totpToken; } - public void setRegDate(Long regDate) { + public RegisteredPlayer setRegDate(Long regDate) { this.regDate = regDate; + + return this; } public long getRegDate() { return this.regDate == null ? Long.MIN_VALUE : this.regDate; } - public void setUuid(String uuid) { + public RegisteredPlayer setUuid(String uuid) { this.uuid = uuid; + + return this; } public String getUuid() { return this.uuid == null ? "" : this.uuid; } - public void setPremiumUuid(String premiumUuid) { + public RegisteredPlayer setPremiumUuid(String premiumUuid) { this.premiumUuid = premiumUuid; + + return this; + } + + public RegisteredPlayer setPremiumUuid(UUID premiumUuid) { + this.premiumUuid = premiumUuid.toString(); + + return this; } public String getPremiumUuid() { @@ -150,15 +208,29 @@ public class RegisteredPlayer { return this.loginIp == null ? "" : this.uuid; } - public void setLoginIp(String loginIp) { + public RegisteredPlayer setLoginIp(String loginIp) { this.loginIp = loginIp; + + return this; } public long getLoginDate() { return this.loginDate == null ? Long.MIN_VALUE : this.loginDate; } - public void setLoginDate(Long loginDate) { + public RegisteredPlayer setLoginDate(Long loginDate) { this.loginDate = loginDate; + + return this; + } + + public long getTokenIssuedAt() { + return this.tokenIssuedAt == null ? Long.MIN_VALUE : this.tokenIssuedAt; + } + + public RegisteredPlayer setTokenIssuedAt(Long tokenIssuedAt) { + this.tokenIssuedAt = tokenIssuedAt; + + return this; } } |
