aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/elytrium/limboauth/command
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/elytrium/limboauth/command')
-rw-r--r--src/main/java/net/elytrium/limboauth/command/ChangePasswordCommand.java4
-rw-r--r--src/main/java/net/elytrium/limboauth/command/PremiumCommand.java108
-rw-r--r--src/main/java/net/elytrium/limboauth/command/TotpCommand.java8
3 files changed, 114 insertions, 6 deletions
diff --git a/src/main/java/net/elytrium/limboauth/command/ChangePasswordCommand.java b/src/main/java/net/elytrium/limboauth/command/ChangePasswordCommand.java
index 2373938..abda93d 100644
--- a/src/main/java/net/elytrium/limboauth/command/ChangePasswordCommand.java
+++ b/src/main/java/net/elytrium/limboauth/command/ChangePasswordCommand.java
@@ -78,8 +78,8 @@ public class ChangePasswordCommand implements SimpleCommand {
try {
UpdateBuilder<RegisteredPlayer, String> updateBuilder = this.playerDao.updateBuilder();
- updateBuilder.where().eq("nickname", ((Player) source).getUsername());
- updateBuilder.updateColumnValue("hash", AuthSessionHandler.genHash(this.needOldPass ? args[1] : args[0]));
+ updateBuilder.where().eq("NICKNAME", ((Player) source).getUsername());
+ updateBuilder.updateColumnValue("HASH", AuthSessionHandler.genHash(this.needOldPass ? args[1] : args[0]));
updateBuilder.update();
source.sendMessage(this.successful);
diff --git a/src/main/java/net/elytrium/limboauth/command/PremiumCommand.java b/src/main/java/net/elytrium/limboauth/command/PremiumCommand.java
new file mode 100644
index 0000000..7b209c5
--- /dev/null
+++ b/src/main/java/net/elytrium/limboauth/command/PremiumCommand.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2021 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 com.velocitypowered.api.permission.Tristate;
+import com.velocitypowered.api.proxy.Player;
+import java.sql.SQLException;
+import net.elytrium.limboauth.LimboAuth;
+import net.elytrium.limboauth.Settings;
+import net.elytrium.limboauth.handler.AuthSessionHandler;
+import net.elytrium.limboauth.model.RegisteredPlayer;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
+
+public class PremiumCommand implements SimpleCommand {
+
+ private final LimboAuth plugin;
+ private final Dao<RegisteredPlayer, String> playerDao;
+
+ private final Component notPlayer;
+ private final Component notPremium;
+ private final Component alreadyPremium;
+ private final Component notRegistered;
+ private final Component successful;
+ private final Component errorOccurred;
+ private final Component wrongPassword;
+ private final Component usage;
+
+ public PremiumCommand(LimboAuth plugin, Dao<RegisteredPlayer, String> playerDao) {
+ this.plugin = plugin;
+ this.playerDao = playerDao;
+
+ this.notPlayer = LegacyComponentSerializer.legacyAmpersand().deserialize(Settings.IMP.MAIN.STRINGS.NOT_PLAYER);
+ this.notPremium = LegacyComponentSerializer.legacyAmpersand().deserialize(Settings.IMP.MAIN.STRINGS.NOT_PREMIUM);
+ this.alreadyPremium = LegacyComponentSerializer.legacyAmpersand().deserialize(Settings.IMP.MAIN.STRINGS.ALREADY_PREMIUM);
+ this.notRegistered = LegacyComponentSerializer.legacyAmpersand().deserialize(Settings.IMP.MAIN.STRINGS.NOT_REGISTERED);
+ this.successful = LegacyComponentSerializer.legacyAmpersand().deserialize(Settings.IMP.MAIN.STRINGS.PREMIUM_SUCCESSFUL);
+ this.errorOccurred = LegacyComponentSerializer.legacyAmpersand().deserialize(Settings.IMP.MAIN.STRINGS.ERROR_OCCURRED);
+ this.wrongPassword = LegacyComponentSerializer.legacyAmpersand().deserialize(Settings.IMP.MAIN.STRINGS.WRONG_PASSWORD);
+ this.usage = LegacyComponentSerializer.legacyAmpersand().deserialize(Settings.IMP.MAIN.STRINGS.PREMIUM_USAGE);
+ }
+
+ @Override
+ public void execute(SimpleCommand.Invocation invocation) {
+ CommandSource source = invocation.source();
+ String[] args = invocation.arguments();
+
+ if (!(source instanceof Player)) {
+ source.sendMessage(this.notPlayer);
+ return;
+ }
+
+ if (args.length == 2) {
+ if (args[1].equalsIgnoreCase("confirm")) {
+ String username = ((Player) source).getUsername();
+ RegisteredPlayer player = AuthSessionHandler.fetchInfo(this.playerDao, username);
+ if (player == null) {
+ source.sendMessage(this.notRegistered);
+ } else if (player.getHash().isEmpty()) {
+ source.sendMessage(this.alreadyPremium);
+ } else if (AuthSessionHandler.checkPassword(args[0], player, this.playerDao)) {
+ if (this.plugin.isPremiumExternal(username)) {
+ try {
+ player.setHash("");
+ this.playerDao.update(player);
+ this.plugin.removePlayerFromCache(username);
+ ((Player) source).disconnect(this.successful);
+ } catch (SQLException e) {
+ source.sendMessage(this.errorOccurred);
+ e.printStackTrace();
+ }
+ } else {
+ source.sendMessage(this.notPremium);
+ }
+ } else {
+ source.sendMessage(this.wrongPassword);
+ }
+
+ return;
+ }
+ }
+
+ source.sendMessage(this.usage);
+ }
+
+ @Override
+ public boolean hasPermission(SimpleCommand.Invocation invocation) {
+ return invocation.source().getPermissionValue("limboauth.commands.unregister") != Tristate.FALSE;
+ }
+}
diff --git a/src/main/java/net/elytrium/limboauth/command/TotpCommand.java b/src/main/java/net/elytrium/limboauth/command/TotpCommand.java
index d51da7d..d7306bd 100644
--- a/src/main/java/net/elytrium/limboauth/command/TotpCommand.java
+++ b/src/main/java/net/elytrium/limboauth/command/TotpCommand.java
@@ -121,8 +121,8 @@ public class TotpCommand implements SimpleCommand {
try {
updateBuilder = this.playerDao.updateBuilder();
- updateBuilder.where().eq("nickname", username);
- updateBuilder.updateColumnValue("totpToken", secret);
+ updateBuilder.where().eq("NICKNAME", username);
+ updateBuilder.updateColumnValue("TOTPTOKEN", secret);
updateBuilder.update();
} catch (SQLException e) {
source.sendMessage(this.errorOccurred);
@@ -175,8 +175,8 @@ public class TotpCommand implements SimpleCommand {
if (AuthSessionHandler.getVerifier().isValidCode(playerInfo.getTotpToken(), args[1])) {
try {
updateBuilder = this.playerDao.updateBuilder();
- updateBuilder.where().eq("nickname", username);
- updateBuilder.updateColumnValue("totpToken", "");
+ updateBuilder.where().eq("NICKNAME", username);
+ updateBuilder.updateColumnValue("TOTPTOKEN", "");
updateBuilder.update();
source.sendMessage(this.disabled);