diff options
Diffstat (limited to 'src/main/java/net/elytrium/limboauth/command/PremiumCommand.java')
-rw-r--r-- | src/main/java/net/elytrium/limboauth/command/PremiumCommand.java | 108 |
1 files changed, 108 insertions, 0 deletions
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; + } +} |