Skip to content

Commit

Permalink
Add option to require pin on register and disable toggling off
Browse files Browse the repository at this point in the history
  • Loading branch information
Iru21 committed Jun 22, 2023
1 parent 240bc52 commit 819302b
Show file tree
Hide file tree
Showing 17 changed files with 90 additions and 48 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
@@ -1,4 +1,4 @@
kotlin.code.style = official
minecraftVersion = 1.17
pluginName = Authy
pluginVersion = 3.2.8
pluginVersion = 3.3.0
6 changes: 3 additions & 3 deletions src/main/kotlin/me/iru/AuthManager.kt
Expand Up @@ -15,8 +15,8 @@ class AuthManager {
private val playerData = Authy.playerData
private val effectRunner = Authy.loginProcess.EffectRunner

fun register(p: Player, password: String) {
playerData.create(p, password)
fun register(p: Player, password: String, pin: String? = null) {
playerData.create(p, password, pin)
loginProcess.removePlayer(p)
p.sendMessage("${translations.getPrefix(PrefixType.REGISTER)} ${translations.get("register_success")}")
authy.server.consoleSender.sendMessage(
Expand All @@ -25,7 +25,7 @@ class AuthManager {
"${org.bukkit.ChatColor.YELLOW}registered with ip ${org.bukkit.ChatColor.WHITE}${p.address?.address?.hostAddress} " +
"${org.bukkit.ChatColor.YELLOW}and UUID ${org.bukkit.ChatColor.WHITE}${p.uniqueId}"
)
if(authy.config.getBoolean("sendPinSetReminder")) p.sendMessage("${translations.getPrefix(PrefixType.WARNING)} ${translations.get("no_pin_warning")}")
if(authy.config.getBoolean("sendPinSetReminder") && pin != null) p.sendMessage("${translations.getPrefix(PrefixType.WARNING)} ${translations.get("no_pin_warning")}")
effectRunner.runRegister(p)
}

Expand Down
15 changes: 10 additions & 5 deletions src/main/kotlin/me/iru/Translations.kt
Expand Up @@ -28,7 +28,7 @@ class Translations {
private var cache: YamlConfiguration? = null

companion object {
const val TRANSLATION_VERSION = 6
const val TRANSLATION_VERSION = 7
}

init {
Expand Down Expand Up @@ -56,9 +56,14 @@ class Translations {
}

private fun getFallback(key: String): String {
authy.server.consoleSender.sendMessage("${authy.prefix} &cThere has been a translation error! Couldn't find key $key in ${authy.config.getString("lang")}")
authy.server.consoleSender.sendMessage("${authy.prefix} §cThere has been a translation error! Couldn't find key §6$key §cin §6${authy.config.getString("lang")}")
val en = File(authy.dataFolder, "lang" + File.separator + "en_us.yml")
return YamlConfiguration.loadConfiguration(en).getString(key) ?: throw IllegalStateException("Key $key not found in lang file en_us! Check folder Authy/lang/")
var fallback = YamlConfiguration.loadConfiguration(en).getString(key)
if(fallback == null) {
authy.server.consoleSender.sendMessage("${authy.prefix} §cFallback key §6$key §cnot found in lang file §6en_us§c! Please update file §6plugins/Authy/lang/en_us.yml")
fallback = "§cTranslation error, please contact an administrator!"
}
return fallback
}

fun get(key: String, mode: ParseMode = ParseMode.ResetAndTranslate): String {
Expand All @@ -78,8 +83,8 @@ class Translations {
checkDefaults()
}
if(hasOldVersion(selectedLang!!)) {
langFile = File(authy.dataFolder, "lang" + File.separator + "en_us.yml")
authy.server.consoleSender.sendMessage("${org.bukkit.ChatColor.DARK_GRAY}[${org.bukkit.ChatColor.GOLD}${authy.description.name}${org.bukkit.ChatColor.DARK_GRAY}] ${org.bukkit.ChatColor.AQUA} Selected language has been reverted to en_us, because the default for $selectedLang is not on the newest version ($TRANSLATION_VERSION)")
langFile = File(authy.dataFolder, "lang" + File.separator + "defaults" + File.separator + "en_us.yml")
authy.server.consoleSender.sendMessage("${org.bukkit.ChatColor.DARK_GRAY}[${org.bukkit.ChatColor.GOLD}${authy.description.name}${org.bukkit.ChatColor.DARK_GRAY}] ${org.bukkit.ChatColor.AQUA} Selected language has been reverted to default en_us, because $selectedLang is not on the newest version ($TRANSLATION_VERSION)")
}
cache = YamlConfiguration.loadConfiguration(langFile)
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/kotlin/me/iru/commands/cPin.kt
Expand Up @@ -43,6 +43,10 @@ class cPin(override var name: String = "pin") : ICommand {
p.sendMessage("${translations.getPrefix(PrefixType.ERROR)} ${translations.get("command_pin_setpinbeforetoggle")}")
return true
}
if(authyPlayer.isPinEnabled && authy.config.getBoolean("requirePin")) {
p.sendMessage("${translations.getPrefix(PrefixType.ERROR)} ${translations.get("command_pin_required")}")
return true
}
authyPlayer.isPinEnabled = !authyPlayer.isPinEnabled
playerData.update(authyPlayer)
p.sendMessage("${translations.getPrefix(PrefixType.PIN)} ${translations.get("command_pin_toggled").format(getStatusTranslated(p))}")
Expand Down
21 changes: 15 additions & 6 deletions src/main/kotlin/me/iru/commands/cRegister.kt
Expand Up @@ -8,7 +8,9 @@ import org.bukkit.command.Command
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
import me.iru.validation.PasswordValidation
import me.iru.validation.PinValidation
import me.iru.validation.getPasswordRule
import me.iru.validation.getPinRule

class cRegister(override var name: String = "register") : ICommand {
val authy = Authy.instance
Expand All @@ -18,14 +20,15 @@ class cRegister(override var name: String = "register") : ICommand {
val authManager = Authy.authManager

override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<out String>): Boolean {
if(sender is Player) {
val p : Player = sender
if(!loginProcess.contains(p)) {
if (sender is Player) {
val p: Player = sender
if (!loginProcess.contains(p)) {
p.sendMessage("${translations.getPrefix(PrefixType.ERROR)} ${translations.get("already_authed")}!")
return true
}
if(args.size != 2) {
p.sendMessage("${translations.getPrefix(PrefixType.ERROR)} ${translations.get("command_register_usage")}")
val requirePin = authy.config.getBoolean("requirePin")
if (args.size != (if (requirePin) 3 else 2)) {
p.sendMessage("${translations.getPrefix(PrefixType.ERROR)} ${translations.get("command_register_usage${if (requirePin) "pin" else ""}")}")
return true
}
if(args[0] != args[1]) {
Expand All @@ -38,8 +41,14 @@ class cRegister(override var name: String = "register") : ICommand {
p.sendMessage("${translations.getPrefix(PrefixType.ERROR)} ${translations.get("command_register_breaksrules").format(rule.minLength, rule.maxLength, rule.minUppercase, rule.minNumbers)}")
return true
}
val pin = args.getOrNull(2)
if(requirePin && !PinValidation.matchesRules(pin!!)) {
val rule = getPinRule()
p.sendMessage("${translations.getPrefix(PrefixType.ERROR)} ${translations.get("command_pin_breaksrules").format(rule.minLength, rule.maxLength)}")
return true
}
return if(!playerData.exists(p.uniqueId)) {
authManager.register(p, password)
authManager.register(p, password, pin)
true
} else {
p.sendMessage("${translations.getPrefix(PrefixType.ERROR)} ${translations.get("command_register_alreadyregistered")}")
Expand Down
6 changes: 4 additions & 2 deletions src/main/kotlin/me/iru/data/PlayerData.kt
Expand Up @@ -31,14 +31,16 @@ class PlayerData {
")")
}

fun create(p: Player, password: String) {
fun create(p: Player, password: String, pin: String?) {
if(!exists(p.uniqueId)) {
update(
AuthyPlayer(
p.uniqueId,
p.name,
p.address?.address?.hostAddress!!,
HashUtil.toSHA256(password)
HashUtil.toSHA256(password),
pin != null,
if (pin != null) HashUtil.toSHA256(pin) else null
)
)
}
Expand Down
6 changes: 4 additions & 2 deletions src/main/kotlin/me/iru/process/LoginProcess.kt
Expand Up @@ -36,11 +36,13 @@ class LoginProcess {
p.sendMessage(
"${translations.getPrefix(PrefixType.WARNING)} ${
translations.get("loginprocess_reminder_login").format(
if (playerData.get(p.uniqueId)!!.isPinEnabled) translations.get("loginprocess_reminderlogin_haspin") else ""
if (playerData.get(p.uniqueId)!!.isPinEnabled) translations.get("loginprocess_reminder_pin") else ""
)
}"
)
}
else p.sendMessage("${translations.getPrefix(PrefixType.WARNING)} ${translations.get("loginprocess_reminder_register")}")
else p.sendMessage("${translations.getPrefix(PrefixType.WARNING)} ${translations.get("loginprocess_reminder_register").format(
if (authy.config.getBoolean("requirePin")) translations.get("loginprocess_reminder_pin") else ""
)}")
}
}
1 change: 1 addition & 0 deletions src/main/resources/config.yml
Expand Up @@ -24,6 +24,7 @@ welcomeMessage:
- "&7Welcome to &6server name&7!"
enabled: false

requirePin: false
sendPinSetReminder: true

# In hours
Expand Down
10 changes: 6 additions & 4 deletions src/main/resources/lang/cs_cz.yml
Expand Up @@ -37,9 +37,10 @@ timedout_error: "&7Vypršel čas pro přihlášení!"
invalid_username: "&7Neplatné uživatelské jméno!"

loginprocess_reminder_login: "&7Přihlas se pomocí &8/&flogin &8[&fheslo&8] %s"
loginprocess_reminderlogin_haspin: "&8[&fpin&8]"
loginprocess_reminder_register: "&7Zaregistruj se pomocí &8/&fregister &8[&fheslo&8] [&fheslo znovu&8]"
loginprocess_reminder_pin: "&8[&fpin&8]"
loginprocess_reminder_register: "&7Zaregistruj se pomocí &8/&fregister &8[&fheslo&8] [&fheslo znovu&8] %s"

command_register_usagepin: "&7Použití: &8/&fregister &8[&fheslo&8] [&fheslo znovu&8] [&fpin&8]"
command_register_usage: "&7Použití: &8/&fregister &8[&fheslo&8] [&fheslo znovu&8]"
command_register_notidentical: "&7Hesla se neshodují!"
command_register_breaksrules: "&7Tvoje heslo neodpovídá požadavkům pro heslo! &fMinimální Délka&8: &c%d&8, &fMaximální Délka&8: &c%d&8, &fMinimum Velkých Znaků&8: &c%s&8, &fMinimum Čísel&8: &c%s"
Expand All @@ -58,8 +59,9 @@ pincommand_info_split: " &8&m----"
pincommand_info_togglehelp: "&8 - /&fpin &7toggle &8- &7Přepne pin"
pincommand_info_sethelp: "&8 - /&fpin &7set &8[&7nový pin kód&8] - &7Nastaví pin"

command_pin_setpinbeforetoggle: "&7Musíš prvně nastavit pin! Použij příkaz &8/&fpin &7set &8[&7new pin code&8]!"
command_pin_setpinbeforetoggle: "&7Musíš prvně nastavit pin! Použij příkaz &8/&fpin &7set &8[&7nový pin kód&8]!"
command_pin_toggled: "&7Pin %s&7!"
command_pin_required: "&7Na tomto serveru nelze zakázat kód pin!"
command_pin_setusage: "&7Použití&8: /&fpin &7set &8[&7nový pin kód&8]"
command_pin_breaksrules: "&7Zadaný pin neodpovídá požadavkům pro pin! &fMinimální Délka&8: &c%d&8, &fMaximální Délka&8: &c%d&8"
command_pin_success: "&7Pin byl nastaven! &7Zapneš ho pomocí příkazu &8/&fpin toggle&7!"
Expand All @@ -75,4 +77,4 @@ duplicateprotection_max_reached: "&7Může existovat pouze &c%s &7účtů na ste

# do not edit
# only updated when new keys have been added/renamed or the formatting has changed
version: 6
version: 7
8 changes: 5 additions & 3 deletions src/main/resources/lang/en_us.yml
Expand Up @@ -37,9 +37,10 @@ timedout_error: "&7Time for authorization has expired!"
invalid_username: "&7Invalid username!"

loginprocess_reminder_login: "&7Login using &8/&flogin &8[&fpassword&8] %s"
loginprocess_reminderlogin_haspin: "&8[&fpin&8]"
loginprocess_reminder_register: "&7Register using &8/&fregister &8[&fpassword&8] [&frepeat password&8]"
loginprocess_reminder_pin: "&8[&fpin code&8]"
loginprocess_reminder_register: "&7Register using &8/&fregister &8[&fpassword&8] [&frepeat password&8] %s"

command_register_usagepin: "&7Usage: &8/&fregister &8[&fpassword&8] [&frepeat password&8] [&fpin code&8]"
command_register_usage: "&7Usage: &8/&fregister &8[&fpassword&8] [&frepeat password&8]"
command_register_notidentical: "&7Repeated password doesn't match!"
command_register_breaksrules: "&7Your password doesn't match the requirements! &cRules&8: &fMinimum Length&8: &c%d&8, &fMaximum Length&8: &c%d&8, &fMinimum Uppercase Characters&8: &c%s&8, &fMinimum Numbers&8: &c%s"
Expand All @@ -60,6 +61,7 @@ pincommand_info_sethelp: "&8 - /&fpin &7set &8[&7new pin code&8] - &7Sets the p

command_pin_setpinbeforetoggle: "&7You need to set a pin first! Use the &8/&fpin &7set &8[&7new pin code&8] &7command!"
command_pin_toggled: "%s &7the pin!"
command_pin_required: "&7You can't disable the pin code on this server!"
command_pin_setusage: "&7Usage&8: /&fpin &7set &8[&7new pin code&8]"
command_pin_breaksrules: "&7Your pin doesn't match the requirements! &cRules&8: &fMinimum Length&8: &c%d&8, &fMaximum Length&8: &c%d&8"
command_pin_success: "&7Pin has been set! &7Remember to enable it using the &8/&fpin toggle &7command!"
Expand All @@ -75,4 +77,4 @@ duplicateprotection_max_reached: "&7There can be only &c%s &7accounts on the sam

# do not edit
# only updated when new keys have been added/renamed or the formatting has changed
version: 6
version: 7
8 changes: 5 additions & 3 deletions src/main/resources/lang/es_es.yml
Expand Up @@ -37,9 +37,10 @@ timedout_error: "&7¡El tiempo para autenticarte ha pasado!"
invalid_username: "&7¡Nombre de usuario no válido!"

loginprocess_reminder_login: "&7Inicia sesión usando &8/&flogin &8[&fcontraseña&8] %s"
loginprocess_reminderlogin_haspin: "&8[&fpin&8]"
loginprocess_reminder_register: "&7Regístrate usando &8/&fregister &8[&fcontraseña&8] [&frepetir contraseña&8]"
loginprocess_reminder_pin: "&8[&fcódigo pin&8]"
loginprocess_reminder_register: "&7Regístrate usando &8/&fregister &8[&fcontraseña&8] [&frepetir contraseña&8] %s"

command_register_usagepin: "&7Uso: &8/&fregister &8[&fcontraseña&8] [&frepetir contraseña&8] [&fcódigo pin&8]"
command_register_usage: "&7Uso: &8/&fregister &8[&fcontraseña&8] [&frepetir contraseña&8]"
command_register_notidentical: "&7¡La contraseña repetida no coincide con la inicial!"
command_register_breaksrules: "&7¡Tu contraseña no cumple las reglas! &cReglas&8: &fLongitud mínima&8: &c%d&8, &fLongitud máximo&8: &c%d&8, &fMínimo de caracteres en mayúscula&8: &c%s&8, &fMínimo de números&8: &c%s"
Expand All @@ -60,6 +61,7 @@ pincommand_info_sethelp: "&8 - /&fpin &7set &8[&7nuevo código pin&8] - &7Confi

command_pin_setpinbeforetoggle: "&7¡Necesitas configurar un pin primero! Usa el comando &8/&fpin &7set &8[&7nuevo código pin&8] &7"
command_pin_toggled: "%s &7el pin!"
command_pin_required: "&7¡No puedes desactivar el código pin en este servidor!"
command_pin_setusage: "&7Uso&8: /&fpin &7set &8[&7nuevo código pin&8]"
command_pin_breaksrules: "&7¡Tu pin no cumple las reglas! &cReglas&8: &fLongitud mínima&8: &c%d&8, &fLongitud máxima&8: &c%d&8"
command_pin_success: "&7¡Tu pin ha sido establecido! &7Recuerda activarlo usando el comando &8/&fpin toggle &7"
Expand All @@ -75,4 +77,4 @@ duplicateprotection_max_reached: "&7¡Solo puede haber &c%s &7ceuntas con la mis

# do not edit
# only updated when new keys have been added/renamed or the formatting has changed
version: 6
version: 7
8 changes: 5 additions & 3 deletions src/main/resources/lang/pl_pl.yml
Expand Up @@ -36,9 +36,10 @@ timedout_error: "&7Czas na autoryzację upłynął!"
invalid_username: "&7Niepoprawna nazwa użytkownika!"

loginprocess_reminder_login: "&7Zaloguj się używając &8/&flogin &8[&fhasło&8] %s"
loginprocess_reminderlogin_haspin: "&8[&fpin&8]"
loginprocess_reminder_register: "&7Zarejestruj się używając &8/&fregister &8[&fhasło&8] [&fpowtórz hasło&8]"
loginprocess_reminder_pin: "&8[&fkod pin&8]"
loginprocess_reminder_register: "&7Zarejestruj się używając &8/&fregister &8[&fhasło&8] [&fpowtórz hasło&8] %s"

command_register_usagepin: "&7Użycie: &8/&fregister &8[&fhasło&8] [&fpowtórz hasło&8] [&fkod pin&8]"
command_register_usage: "&7Użycie: &8/&fregister &8[&fhasło&8] [&fpowtórz hasło&8]"
command_register_notidentical: "&7Hasła się nie zgadzają!"
command_register_breaksrules: "&7Hasło nie spełnia wymagań! &cZasady&8: &fMinimalna Długość&8: &c%d&8, &fMaksymalna Długość&8: &c%d&8, &fMinimalna Ilość Wielkich Liter&8: &c%s&8, &fMinimalna Ilość Liczb&8: &c%s"
Expand All @@ -59,6 +60,7 @@ pincommand_info_sethelp: "&8 - /&fpin &7set &8[&7nowy pin&8] - &7Ustawia pin"

command_pin_setpinbeforetoggle: "&7Musisz najpierw ustawić pin! Użyj &8/&fpin &7set &8[&7nowy pin&8]&7!"
command_pin_toggled: "%s &7pin!"
command_pin_required: "&7Nie możesz wyłączyć kodu pin na tym serwerze!"
command_pin_setusage: "&7Użycie&8: /&fpin &7set &8[&7nowy pin&8]"
command_pin_breaksrules: "&7Pin nie spełnia wymagań! &cZasady&8: &fMinimalna Długość&8: &c%d&8, &fMaksymalna Długość&8: &c%d&8"
command_pin_success: "&7Pin został ustawiony! &7Pamiętaj, aby włączyć go za pomocą &8/&fpin toggle&7!"
Expand All @@ -74,4 +76,4 @@ duplicateprotection_max_reached: "&7Może być tylko &c%s &7kont z tym samym adr

# do not edit
# only updated when new keys have been added/renamed or the formatting has changed
version: 6
version: 7
8 changes: 5 additions & 3 deletions src/main/resources/lang/ru_ru.yml
Expand Up @@ -36,9 +36,10 @@ timedout_error: "&7Срок авторизации истек!"
invalid_username: "&7Неверное имя пользователя!"

loginprocess_reminder_login: "&7Войдите в свою учетную запись, используя &8/&flogin &8[&fпароль&8] %s"
loginprocess_reminderlogin_haspin: "&8[&fpin&8]"
loginprocess_reminder_register: "&7Зарегистрируйтесь, используя &8/&fregister &8[&fпароль&8] [&fПовторите пароль&8]"
loginprocess_reminder_pin: "&8[&fпин-код&8]"
loginprocess_reminder_register: "&7Зарегистрируйтесь, используя &8/&fregister &8[&fпароль&8] [&fПовторите пароль&8] %s"

command_register_usagepin: "&7Использование: &8/&fregister &8[&fпароль&8] [&fПовторите пароль&8] [&fпин-код&8]"
command_register_usage: "&7Использование: &8/&fregister &8[&fпароль&8] [&fПовторите пароль&8]"
command_register_notidentical: "&7Пароли не совпадают!"
command_register_breaksrules: "&7Пароль не отвечает требованием! &cПравила&8: &fМинимальная длина&8: &c%d&8, &fМаксимальная длина&8: &c%d&8, &fМинимум заглавных букв&8: &c%d&8, &fМинимум цифр&8: &c%d"
Expand All @@ -59,6 +60,7 @@ pincommand_info_sethelp: "&8 - /&fpin &7set &8[&7пин-код&8] - &7Уста

command_pin_setpinbeforetoggle: "&7Сначала нужно установить пин-код! Используйте &8/&fpin &7set &8[&7пин-код&8]&7!"
command_pin_toggled: "&7Пин-код %s!"
command_pin_required: "&7Вы не можете отключить пин-код на этом сервере!"
command_pin_setusage: "&7Использование&8: /&fpin &7set &8[&7пин-код&8]"
command_pin_breaksrules: "&7Пин не соответствует требованиям! &Правила&8: &Минимальная длина&8: &c%d&8, &fМаксимальная длина&8: &c%d"
command_pin_success: "&7Пин-код установлен! &7Не забудьте включить его с помощью &8/&fpin toggle &7!"
Expand All @@ -74,4 +76,4 @@ duplicateprotection_max_reached: "&7Достигнут лимит аккаунт

# do not edit
# only updated when new keys have been added/renamed or the formatting has changed
version: 6
version: 7

0 comments on commit 819302b

Please sign in to comment.