diff options
Diffstat (limited to 'src/main/java/net/elytrium/limboauth/command')
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); | 
