Set user join date in database again on account creation

This commit is contained in:
Ceikry 2022-06-27 11:28:29 +00:00 committed by Ryan
parent 278944b892
commit 9a2a2fe49d
3 changed files with 31 additions and 22 deletions

View file

@ -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<AccountStorageProvider>() {
override fun configureFor(provider: AccountStorageProvider) {
@ -18,6 +19,7 @@ class ProductionAuthenticator : AuthProvider<AccountStorageProvider>() {
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

View file

@ -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<Any> {
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 {

View file

@ -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<Int>) : String {
val sb = StringBuilder("UPDATE members SET ")