diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | build.gradle | 6 | ||||
-rw-r--r-- | gradle.properties | 8 | ||||
-rw-r--r-- | gradle/wrapper/gradle-wrapper.properties | 2 | ||||
-rw-r--r-- | src/main/java/net/elytrium/limboauth/LimboAuth.java | 7 | ||||
-rw-r--r-- | src/main/java/net/elytrium/limboauth/Settings.java | 8 | ||||
-rw-r--r-- | src/main/java/net/elytrium/limboauth/command/ForceRegisterCommand.java | 95 |
8 files changed, 120 insertions, 9 deletions
@@ -48,6 +48,7 @@ Test server: [``ely.su``](https://hotmc.ru/minecraft-server-203216) - ***limboauth.admin.forceunregister* | /forceunregister** - Force Unregister Account Command - ***limboauth.admin.forcechangepassword* | /forcechangepassword** - Force Change Account Password Command +- ***limboauth.admin.forceregister* | /forceregister** - Force Registration Account Command - ***limboauth.admin.reload* | /lauth reload** - Reload Plugin Command - ***limboauth.admin.***\* - Gives All Admin Permissions @@ -1 +1 @@ -1.1.11 +1.1.12 diff --git a/build.gradle b/build.gradle index f2cb645..0952fc6 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ plugins { } setGroup("net.elytrium") -setVersion("1.1.11") +setVersion("1.1.12") java { setSourceCompatibility(JavaVersion.VERSION_11) @@ -33,8 +33,8 @@ repositories { setUrl("https://papermc.io/repo/repository/maven-public/") } maven { - setName("opencollab-repo") - setUrl("https://repo.opencollab.dev/maven-snapshots/") + setName("opencollab-snapshot") + setUrl("https://repo.opencollab.dev/maven-snapshots") } } diff --git a/gradle.properties b/gradle.properties index cde59e7..3603447 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ -limboapiVersion=1.1.4 +limboapiVersion=1.1.7 velocityVersion=3.2.0-SNAPSHOT nettyVersion=4.1.86.Final -floodgateVersion=2.1.1-SNAPSHOT +floodgateVersion=2.2.0-SNAPSHOT fastutilVersion=8.5.11 -bstatsVersion=3.0.0 +bstatsVersion=3.0.1 spotbugsVersion=4.7.3 -elytriumCommonsVersion=1.2.0 +elytriumCommonsVersion=1.2.5-1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index aa991fc..070cb70 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/net/elytrium/limboauth/LimboAuth.java b/src/main/java/net/elytrium/limboauth/LimboAuth.java index 76b89f8..8b85a28 100644 --- a/src/main/java/net/elytrium/limboauth/LimboAuth.java +++ b/src/main/java/net/elytrium/limboauth/LimboAuth.java @@ -91,6 +91,7 @@ import net.elytrium.limboapi.api.file.WorldFile; import net.elytrium.limboauth.command.ChangePasswordCommand; import net.elytrium.limboauth.command.DestroySessionCommand; import net.elytrium.limboauth.command.ForceChangePasswordCommand; +import net.elytrium.limboauth.command.ForceRegisterCommand; import net.elytrium.limboauth.command.ForceUnregisterCommand; import net.elytrium.limboauth.command.LimboAuthCommand; import net.elytrium.limboauth.command.PremiumCommand; @@ -320,6 +321,7 @@ public class LimboAuth { CommandManager manager = this.server.getCommandManager(); manager.unregister("unregister"); + manager.unregister("forceregister"); manager.unregister("premium"); manager.unregister("forceunregister"); manager.unregister("changepassword"); @@ -329,6 +331,7 @@ public class LimboAuth { manager.unregister("limboauth"); manager.register("unregister", new UnregisterCommand(this, this.playerDao), "unreg"); + manager.register("forceregister", new ForceRegisterCommand(this, this.playerDao), "forcereg"); manager.register("premium", new PremiumCommand(this, this.playerDao), "license"); manager.register("forceunregister", new ForceUnregisterCommand(this, this.server, this.playerDao), "forceunreg"); manager.register("changepassword", new ChangePasswordCommand(this, this.playerDao), "changepass", "cp"); @@ -905,6 +908,10 @@ public class LimboAuth { return this.authServer; } + public Pattern getNicknameValidationPattern() { + return this.nicknameValidationPattern; + } + private static class CachedUser { private final long checkTime; diff --git a/src/main/java/net/elytrium/limboauth/Settings.java b/src/main/java/net/elytrium/limboauth/Settings.java index c2d7973..f6aa89f 100644 --- a/src/main/java/net/elytrium/limboauth/Settings.java +++ b/src/main/java/net/elytrium/limboauth/Settings.java @@ -320,6 +320,8 @@ public class Settings extends YamlConfig { @Comment("Permission: limboauth.admin.forcechangepassword") public CommandPermissionState FORCE_CHANGE_PASSWORD = CommandPermissionState.PERMISSION; + @Comment("Permission: limboauth.admin.forceregister") + public CommandPermissionState FORCE_REGISTER = CommandPermissionState.PERMISSION; @Comment("Permission: limboauth.admin.forceunregister") public CommandPermissionState FORCE_UNREGISTER = CommandPermissionState.PERMISSION; @Comment("Permission: limboauth.admin.reload") @@ -433,6 +435,12 @@ public class Settings extends YamlConfig { public String FORCE_CHANGE_PASSWORD_NOT_SUCCESSFUL = "{PRFX} &cUnable to change password for &6{0}&c. Most likely this player has never been on this server."; public String FORCE_CHANGE_PASSWORD_USAGE = "{PRFX} Usage: &6/forcechangepassword <nickname> <new password>"; + public String FORCE_REGISTER_USAGE = "{PRFX} Usage: &6/forceregister <nickname> <password>"; + public String FORCE_REGISTER_INCORRECT_NICKNAME = "{PRFX} &cNickname contains forbidden characters."; + public String FORCE_REGISTER_TAKEN_NICKNAME = "{PRFX} &cThis nickname is already taken."; + public String FORCE_REGISTER_SUCCESSFUL = "{PRFX} &aSuccessfully registered player &6{0}&a!"; + public String FORCE_REGISTER_NOT_SUCCESSFUL = "{PRFX} &cUnable to register player &6{0}&c."; + public String TOTP = "{PRFX} Please, enter your 2FA key using &6/2fa <key>"; @Comment(value = "Can be empty.", at = Comment.At.SAME_LINE) public String TOTP_TITLE = "{PRFX}"; diff --git a/src/main/java/net/elytrium/limboauth/command/ForceRegisterCommand.java b/src/main/java/net/elytrium/limboauth/command/ForceRegisterCommand.java new file mode 100644 index 0000000..508dbf9 --- /dev/null +++ b/src/main/java/net/elytrium/limboauth/command/ForceRegisterCommand.java @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2021 - 2023 Elytrium + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +package net.elytrium.limboauth.command; + +import com.j256.ormlite.dao.Dao; +import com.velocitypowered.api.command.CommandSource; +import com.velocitypowered.api.command.SimpleCommand; +import java.sql.SQLException; +import java.text.MessageFormat; +import java.util.Locale; +import net.elytrium.commons.kyori.serialization.Serializer; +import net.elytrium.limboauth.LimboAuth; +import net.elytrium.limboauth.Settings; +import net.elytrium.limboauth.model.RegisteredPlayer; +import net.elytrium.limboauth.model.SQLRuntimeException; +import net.kyori.adventure.text.Component; + +public class ForceRegisterCommand implements SimpleCommand { + + private final LimboAuth plugin; + private final Dao<RegisteredPlayer, String> playerDao; + + private final String successful; + private final String notSuccessful; + private final Component usage; + private final Component takenNickname; + private final Component incorrectNickname; + + public ForceRegisterCommand(LimboAuth plugin, Dao<RegisteredPlayer, String> playerDao) { + this.plugin = plugin; + this.playerDao = playerDao; + + this.successful = Settings.IMP.MAIN.STRINGS.FORCE_REGISTER_SUCCESSFUL; + this.notSuccessful = Settings.IMP.MAIN.STRINGS.FORCE_REGISTER_NOT_SUCCESSFUL; + this.usage = LimboAuth.getSerializer().deserialize(Settings.IMP.MAIN.STRINGS.FORCE_REGISTER_USAGE); + this.takenNickname = LimboAuth.getSerializer().deserialize(Settings.IMP.MAIN.STRINGS.FORCE_REGISTER_TAKEN_NICKNAME); + this.incorrectNickname = LimboAuth.getSerializer().deserialize(Settings.IMP.MAIN.STRINGS.FORCE_REGISTER_INCORRECT_NICKNAME); + } + + @Override + public void execute(SimpleCommand.Invocation invocation) { + CommandSource source = invocation.source(); + String[] args = invocation.arguments(); + + if (args.length == 2) { + String nickname = args[0]; + String password = args[1]; + + Serializer serializer = LimboAuth.getSerializer(); + try { + if (!this.plugin.getNicknameValidationPattern().matcher(nickname).matches()) { + source.sendMessage(this.incorrectNickname); + return; + } + + String lowercaseNickname = nickname.toLowerCase(Locale.ROOT); + if (this.playerDao.idExists(lowercaseNickname)) { + source.sendMessage(this.takenNickname); + return; + } + + RegisteredPlayer player = new RegisteredPlayer(nickname, "", "").setPassword(password); + this.playerDao.create(player); + + source.sendMessage(serializer.deserialize(MessageFormat.format(this.successful, nickname))); + } catch (SQLException e) { + source.sendMessage(serializer.deserialize(MessageFormat.format(this.notSuccessful, nickname))); + throw new SQLRuntimeException(e); + } + } else { + source.sendMessage(this.usage); + } + } + + @Override + public boolean hasPermission(SimpleCommand.Invocation invocation) { + return Settings.IMP.MAIN.COMMAND_PERMISSION_STATE.FORCE_REGISTER + .hasPermission(invocation.source(), "limboauth.admin.forceregister"); + } +} |