fix: enforce fullwidth

This commit is contained in:
Raymond
2026-06-07 00:00:11 -04:00
parent 593783866a
commit 898939485c
5 changed files with 7 additions and 9 deletions
@@ -1,8 +1,6 @@
package icu.samnyan.aqua.net.games package icu.samnyan.aqua.net.games
import ext.isoDate import ext.*
import ext.minus
import ext.mut
import java.time.LocalDate import java.time.LocalDate
const val LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + const val LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
@@ -17,10 +15,10 @@ const val WACCA_USERNAME_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
"0123456789" + "0123456789" +
"~|?!=()[]{},.:;\"@/_-+#*&%$" "~|?!=()[]{},.:;\"@/_-+#*&%$"
fun usernameCheck(chars: String): (IUserData, String) -> Unit = { u, v -> fun usernameCheck(isWacca: Bool): (IUserData, String) -> Unit = { u, v ->
u.userName = v
if (v.isBlank()) { 400 - "Username cannot be blank" } if (v.isBlank()) { 400 - "Username cannot be blank" }
if (v.length > 8) { 400 - "Username too long" } if (v.length > 8) { 400 - "Username too long" }
u.userName = toFullWidth(v)
// v.find { it !in chars }?.let { 400 - "Invalid character '$it' in username" } // v.find { it !in chars }?.let { 400 - "Invalid character '$it' in username" }
} }
@@ -33,7 +33,7 @@ class Chusan(
// Only show > AAA rank // Only show > AAA rank
override val shownRanks = chu3Scores.filter { it.first >= 95 * 10000 } override val shownRanks = chu3Scores.filter { it.first >= 95 * 10000 }
override val settableFields: Map<String, (Chu3UserData, String) -> Unit> by lazy { mapOf( override val settableFields: Map<String, (Chu3UserData, String) -> Unit> by lazy { mapOf(
"userName" to usernameCheck(SEGA_USERNAME_CHARS), "userName" to usernameCheck(false),
"nameplateId" to { u, v -> u.nameplateId = v.int }, "nameplateId" to { u, v -> u.nameplateId = v.int },
"frameId" to { u, v -> u.frameId = v.int }, "frameId" to { u, v -> u.frameId = v.int },
"trophyId" to { u, v -> u.trophyId = v.int }, "trophyId" to { u, v -> u.trophyId = v.int },
@@ -40,7 +40,7 @@ class Maimai2(
// Only show > S rank // Only show > S rank
override val shownRanks = mai2Scores.filter { it.first >= 97 * 10000 } override val shownRanks = mai2Scores.filter { it.first >= 97 * 10000 }
override val settableFields: Map<String, (Mai2UserDetail, String) -> Unit> by lazy { mapOf( override val settableFields: Map<String, (Mai2UserDetail, String) -> Unit> by lazy { mapOf(
"userName" to usernameCheck(SEGA_USERNAME_CHARS), "userName" to usernameCheck(false),
"iconId" to { u, v -> u.iconId = v.int() }, "iconId" to { u, v -> u.iconId = v.int() },
"plateId" to { u, v -> u.plateId = v.int() }, "plateId" to { u, v -> u.plateId = v.int() },
"titleId" to { u, v -> u.titleId = v.int() }, "titleId" to { u, v -> u.titleId = v.int() },
@@ -35,7 +35,7 @@ class Ongeki(
override val shownRanks = ongekiScores.filter { it.first >= 950000 } override val shownRanks = ongekiScores.filter { it.first >= 950000 }
override val settableFields: Map<String, (UserData, String) -> Unit> by lazy { mapOf( override val settableFields: Map<String, (UserData, String) -> Unit> by lazy { mapOf(
"userName" to usernameCheck(SEGA_USERNAME_CHARS), "userName" to usernameCheck(false),
"lastRomVersion" to { u, v -> u.lastRomVersion = v }, "lastRomVersion" to { u, v -> u.lastRomVersion = v },
"lastDataVersion" to { u, v -> u.lastDataVersion = v }, "lastDataVersion" to { u, v -> u.lastDataVersion = v },
@@ -22,7 +22,7 @@ class Wacca(
override val userMusicRepo: WcUserBestScoreRepo, override val userMusicRepo: WcUserBestScoreRepo,
): GameApiController<WaccaUser>("wacca", WaccaUser::class) { ): GameApiController<WaccaUser>("wacca", WaccaUser::class) {
override val settableFields: Map<String, (WaccaUser, String) -> Unit> by lazy { mapOf( override val settableFields: Map<String, (WaccaUser, String) -> Unit> by lazy { mapOf(
"userName" to usernameCheck(WACCA_USERNAME_CHARS), "userName" to usernameCheck(true),
"lastRomVersion" to { u, v -> u.lastRomVersion = v }, "lastRomVersion" to { u, v -> u.lastRomVersion = v },
) } ) }