From ae76759dc0e197cb286a6484d1b8c22029cce62e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Vis=C3=A9e?= Date: Sun, 1 Nov 2015 20:50:25 +0100 Subject: [PATCH] Implemented the register command --- .../xephi/authme/command/CommandManager.java | 31 +++++++++ .../executable/register/RegisterCommand.java | 69 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java diff --git a/src/main/java/fr/xephi/authme/command/CommandManager.java b/src/main/java/fr/xephi/authme/command/CommandManager.java index 696e4658c..82c5d173b 100644 --- a/src/main/java/fr/xephi/authme/command/CommandManager.java +++ b/src/main/java/fr/xephi/authme/command/CommandManager.java @@ -355,9 +355,40 @@ public class CommandManager { loginHelpCommand.addArgument(new CommandArgumentDescription("query", "The command or query to view help for.", true)); loginHelpCommand.setMaximumArguments(false); + // Register the base register command + CommandDescription registerBaseCommand = new CommandDescription( + new RegisterCommand(), + new ArrayList() {{ + add("register"); + add("reg"); + }}, + "Registration command", + "Command to register using AuthMeReloaded.", null); + registerBaseCommand.setCommandPermissions("authme.register", CommandPermissions.DefaultPermission.ALLOWED); + registerBaseCommand.addArgument(new CommandArgumentDescription("password", "Password", false)); + registerBaseCommand.addArgument(new CommandArgumentDescription("verifyPassword", "Verify password", false)); + registerBaseCommand.setMaximumArguments(false); + + // Register the help command + CommandDescription registerHelpCommand = new CommandDescription( + new HelpCommand(), + new ArrayList() {{ + add("help"); + add("hlp"); + add("h"); + add("sos"); + add("?"); + }}, + "View help", + "View detailed help pages about AuthMeReloaded register commands.", + registerBaseCommand); + registerHelpCommand.addArgument(new CommandArgumentDescription("query", "The command or query to view help for.", true)); + registerHelpCommand.setMaximumArguments(false); + // Add the base commands to the commands array this.commandDescriptions.add(authMeBaseCommand); this.commandDescriptions.add(loginBaseCommand); + this.commandDescriptions.add(registerBaseCommand); } /** diff --git a/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java b/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java new file mode 100644 index 000000000..b08190fc8 --- /dev/null +++ b/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java @@ -0,0 +1,69 @@ +package fr.xephi.authme.command.executable.register; + +import fr.xephi.authme.AuthMe; +import fr.xephi.authme.command.CommandParts; +import fr.xephi.authme.command.ExecutableCommand; +import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.settings.Messages; +import fr.xephi.authme.settings.Settings; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class RegisterCommand extends ExecutableCommand { + + /** + * Execute the command. + * + * @param sender The command sender. + * @param commandReference The command reference. + * @param commandArguments The command arguments. + * + * @return True if the command was executed successfully, false otherwise. + */ + @Override + public boolean executeCommand(CommandSender sender, CommandParts commandReference, CommandParts commandArguments) { + // AuthMe plugin instance + final AuthMe plugin = AuthMe.getInstance(); + + // Messages instance + final Messages m = Messages.getInstance(); + + // Make sure the sender is a player + if (!(sender instanceof Player)) { + sender.sendMessage("Player Only! Use 'authme register ' instead"); + return true; + } + + // Make sure the command arguments are valid + final Player player = (Player) sender; + if (commandArguments.getCount() == 0 || (Settings.getEnablePasswordVerifier && commandArguments.getCount() < 2)) { + m.send(player, "usage_reg"); + return true; + } + + if (Settings.emailRegistration && !Settings.getmailAccount.isEmpty()) { + if (Settings.doubleEmailCheck) { + if (commandArguments.getCount() < 2 || !commandArguments.get(0).equals(commandArguments.get(1))) { + m.send(player, "usage_reg"); + return true; + } + } + final String email = commandArguments.get(0); + if (!Settings.isEmailCorrect(email)) { + m.send(player, "email_invalid"); + return true; + } + RandomString rand = new RandomString(Settings.getRecoveryPassLength); + final String thePass = rand.nextString(); + plugin.management.performRegister(player, thePass, email); + return true; + } + if (commandArguments.getCount() > 1 && Settings.getEnablePasswordVerifier) + if (!commandArguments.get(0).equals(commandArguments.get(1))) { + m.send(player, "password_error"); + return true; + } + plugin.management.performRegister(player, commandArguments.get(0), ""); + return true; + } +}