From 9a2a2fe49de608086944f496187f44fc1189bf0f Mon Sep 17 00:00:00 2001 From: Ceikry Date: Mon, 27 Jun 2022 11:28:29 +0000 Subject: [PATCH] Set user join date in database again on account creation --- .../rs09/auth/ProductionAuthenticator.kt | 2 + .../main/kotlin/rs09/auth/UserAccountInfo.kt | 9 ++-- .../kotlin/rs09/storage/SQLStorageProvider.kt | 42 ++++++++++--------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/Server/src/main/kotlin/rs09/auth/ProductionAuthenticator.kt b/Server/src/main/kotlin/rs09/auth/ProductionAuthenticator.kt index 424fe5357..0ba94f5c4 100644 --- a/Server/src/main/kotlin/rs09/auth/ProductionAuthenticator.kt +++ b/Server/src/main/kotlin/rs09/auth/ProductionAuthenticator.kt @@ -6,6 +6,7 @@ import rs09.ServerConstants import rs09.storage.AccountStorageProvider import rs09.storage.SQLStorageProvider import java.sql.SQLDataException +import java.sql.Timestamp class ProductionAuthenticator : AuthProvider() { override fun configureFor(provider: AccountStorageProvider) { @@ -18,6 +19,7 @@ class ProductionAuthenticator : AuthProvider() { override fun createAccountWith(info: UserAccountInfo): Boolean { try { info.password = SystemManager.getEncryption().hashPassword(info.password) + info.joinDate = Timestamp(System.currentTimeMillis()) storageProvider.store(info) } catch (e: SQLDataException) { return false diff --git a/Server/src/main/kotlin/rs09/auth/UserAccountInfo.kt b/Server/src/main/kotlin/rs09/auth/UserAccountInfo.kt index d73318609..0195858da 100644 --- a/Server/src/main/kotlin/rs09/auth/UserAccountInfo.kt +++ b/Server/src/main/kotlin/rs09/auth/UserAccountInfo.kt @@ -1,5 +1,7 @@ package rs09.auth +import java.sql.Timestamp + class UserAccountInfo( var username: String, var password: String, @@ -17,11 +19,12 @@ class UserAccountInfo( var clanReqs: String, var timePlayed: Long, var lastLogin: Long, - var online: Boolean + var online: Boolean, + var joinDate: Timestamp ) { companion object { @JvmStatic fun createDefault() : UserAccountInfo { - return UserAccountInfo("", "", 0, 0, 0, "", "", 0L, 0L, "", "", "", "", "1,0,8,9", 0L, 0L, false).also { it.setInitialReferenceValues() } + return UserAccountInfo("", "", 0, 0, 0, "", "", 0L, 0L, "", "", "", "", "1,0,8,9", 0L, 0L, false, joinDate = Timestamp(System.currentTimeMillis())).also { it.setInitialReferenceValues() } } } @@ -43,7 +46,7 @@ class UserAccountInfo( } fun toArray(): Array { - return arrayOf(username, password, uid, rights, credits, ip, lastUsedIp, muteEndTime, banEndTime, contacts, blocked, clanName, currentClan, clanReqs, timePlayed, lastLogin, online) + return arrayOf(username, password, uid, rights, credits, ip, lastUsedIp, muteEndTime, banEndTime, contacts, blocked, clanName, currentClan, clanReqs, timePlayed, lastLogin, online, joinDate) } override fun toString(): String { diff --git a/Server/src/main/kotlin/rs09/storage/SQLStorageProvider.kt b/Server/src/main/kotlin/rs09/storage/SQLStorageProvider.kt index 318bc7ec3..dc42ba1ff 100644 --- a/Server/src/main/kotlin/rs09/storage/SQLStorageProvider.kt +++ b/Server/src/main/kotlin/rs09/storage/SQLStorageProvider.kt @@ -45,22 +45,23 @@ class SQLStorageProvider : AccountStorageProvider { val userData = UserAccountInfo.createDefault() userData.username = username - result.getString(2) ?.let { userData.password = it } - result.getInt(3) .let { userData.uid = it } - result.getInt(4) .let { userData.rights = it } - result.getInt(5) .let { userData.credits = it } - result.getString(6) ?.let { userData.ip = it } - result.getString(7) ?.let { userData.lastUsedIp = it } - result.getLong(8) .let { userData.muteEndTime = max(0L, it) } - result.getLong(9) .let { userData.banEndTime = max(0L, it) } - result.getString(10)?.let { userData.contacts = it } - result.getString(11)?.let { userData.blocked = it } - result.getString(12)?.let { userData.clanName = it } - result.getString(13)?.let { userData.currentClan = it } - result.getString(14)?.let { userData.clanReqs = it } - result.getLong(15) .let { userData.timePlayed = max(0L, it) } - result.getLong(16) .let { userData.lastLogin = max(0L, it) } - result.getBoolean(17).let { userData.online = it } + result.getString(2) ?.let { userData.password = it } + result.getInt(3) .let { userData.uid = it } + result.getInt(4) .let { userData.rights = it } + result.getInt(5) .let { userData.credits = it } + result.getString(6) ?.let { userData.ip = it } + result.getString(7) ?.let { userData.lastUsedIp = it } + result.getLong(8) .let { userData.muteEndTime = max(0L, it) } + result.getLong(9) .let { userData.banEndTime = max(0L, it) } + result.getString(10) ?.let { userData.contacts = it } + result.getString(11) ?.let { userData.blocked = it } + result.getString(12) ?.let { userData.clanName = it } + result.getString(13) ?.let { userData.currentClan = it } + result.getString(14) ?.let { userData.clanReqs = it } + result.getLong(15) .let { userData.timePlayed = max(0L, it) } + result.getLong(16) .let { userData.lastLogin = max(0L, it) } + result.getBoolean(17) .let { userData.online = it } + result.getTimestamp(18) .let { userData.joinDate = it ?: Timestamp(System.currentTimeMillis()) } userData.setInitialReferenceValues() return userData @@ -102,6 +103,7 @@ class SQLStorageProvider : AccountStorageProvider { compiledInsertInfoQuery.setLong(14, info.timePlayed) compiledInsertInfoQuery.setLong(15, info.lastLogin) compiledInsertInfoQuery.setBoolean(16, info.online) + compiledInsertInfoQuery.setTimestamp(17, info.joinDate) compiledInsertInfoQuery.execute() val result = compiledInsertInfoQuery.generatedKeys if (result.next()) { @@ -195,7 +197,8 @@ class SQLStorageProvider : AccountStorageProvider { "clanReqs," + "timePlayed," + "lastLogin," + - "online" + + "online," + + "joined_date" + " FROM members WHERE username = ?;" private const val insertInfoQuery = "INSERT INTO members (" + "username," + @@ -213,8 +216,9 @@ class SQLStorageProvider : AccountStorageProvider { "clanReqs," + "timePlayed," + "lastLogin," + - "online" + - ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);" + "online," + + "joined_date" + + ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);" private fun buildUpdateInfoQuery(updatedIndices: ArrayList) : String { val sb = StringBuilder("UPDATE members SET ")