diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/debug/TestEmailSender.java b/src/main/java/fr/xephi/authme/command/executable/authme/debug/TestEmailSender.java index 38dbf14a..ccbfde6f 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/debug/TestEmailSender.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/debug/TestEmailSender.java @@ -5,6 +5,7 @@ import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSourceResult; import fr.xephi.authme.mail.SendMailSsl; import fr.xephi.authme.util.StringUtils; +import fr.xephi.authme.util.Utils; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.HtmlEmail; import org.bukkit.ChatColor; @@ -69,7 +70,7 @@ class TestEmailSender implements DebugSection { return null; } final String email = emailResult.getValue(); - if (email == null || "your@email.com".equals(email)) { + if (Utils.isEmailEmpty(email)) { sender.sendMessage(ChatColor.RED + "No email set for your account!" + " Please use /authme debug mail "); return null; diff --git a/src/main/java/fr/xephi/authme/command/executable/email/RecoverEmailCommand.java b/src/main/java/fr/xephi/authme/command/executable/email/RecoverEmailCommand.java index 1e5ece77..7787bb56 100644 --- a/src/main/java/fr/xephi/authme/command/executable/email/RecoverEmailCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/email/RecoverEmailCommand.java @@ -10,6 +10,7 @@ import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.PasswordRecoveryService; import fr.xephi.authme.service.RecoveryCodeService; +import fr.xephi.authme.util.Utils; import org.bukkit.entity.Player; import javax.inject.Inject; @@ -60,7 +61,7 @@ public class RecoverEmailCommand extends PlayerCommand { } final String email = emailResult.getValue(); - if (email == null || !email.equalsIgnoreCase(playerMail) || "your@email.com".equalsIgnoreCase(email)) { + if (Utils.isEmailEmpty(email) || !email.equalsIgnoreCase(playerMail)) { commonService.send(player, MessageKey.INVALID_EMAIL); return; } diff --git a/src/main/java/fr/xephi/authme/command/executable/email/ShowEmailCommand.java b/src/main/java/fr/xephi/authme/command/executable/email/ShowEmailCommand.java index 24a300ef..64ddad11 100644 --- a/src/main/java/fr/xephi/authme/command/executable/email/ShowEmailCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/email/ShowEmailCommand.java @@ -5,6 +5,7 @@ import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.service.CommonService; +import fr.xephi.authme.util.Utils; import org.bukkit.entity.Player; import javax.inject.Inject; @@ -24,7 +25,7 @@ public class ShowEmailCommand extends PlayerCommand { @Override public void runCommand(Player player, List arguments) { PlayerAuth auth = playerCache.getAuth(player.getName()); - if (auth != null && auth.getEmail() != null && !"your@email.com".equalsIgnoreCase(auth.getEmail())) { + if (auth != null && !Utils.isEmailEmpty(auth.getEmail())) { commonService.send(player, MessageKey.EMAIL_SHOW, auth.getEmail()); } else { commonService.send(player, MessageKey.SHOW_NO_EMAIL); diff --git a/src/main/java/fr/xephi/authme/initialization/OnStartupTasks.java b/src/main/java/fr/xephi/authme/initialization/OnStartupTasks.java index 902e2857..32bd7035 100644 --- a/src/main/java/fr/xephi/authme/initialization/OnStartupTasks.java +++ b/src/main/java/fr/xephi/authme/initialization/OnStartupTasks.java @@ -7,20 +7,20 @@ import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.message.Messages; +import fr.xephi.authme.output.ConsoleFilter; +import fr.xephi.authme.output.Log4JFilter; import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.Usage; -import org.bstats.Metrics; -import fr.xephi.authme.output.ConsoleFilter; -import fr.xephi.authme.output.Log4JFilter; import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.StringUtils; +import fr.xephi.authme.util.Utils; import org.apache.logging.log4j.LogManager; +import org.bstats.Metrics; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -112,7 +112,7 @@ public class OnStartupTasks { public void run() { for (PlayerAuth auth : dataSource.getLoggedPlayers()) { String email = auth.getEmail(); - if (StringUtils.isEmpty(email) || "your@email.com".equalsIgnoreCase(email)) { + if (Utils.isEmailEmpty(email)) { Player player = bukkitService.getPlayerExact(auth.getRealName()); if (player != null) { messages.send(player, MessageKey.ADD_EMAIL_MESSAGE); diff --git a/src/main/java/fr/xephi/authme/process/email/AsyncAddEmail.java b/src/main/java/fr/xephi/authme/process/email/AsyncAddEmail.java index 0f9ffbf2..cb5a2c66 100644 --- a/src/main/java/fr/xephi/authme/process/email/AsyncAddEmail.java +++ b/src/main/java/fr/xephi/authme/process/email/AsyncAddEmail.java @@ -8,6 +8,7 @@ import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.AsynchronousProcess; import fr.xephi.authme.service.CommonService; import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.util.Utils; import org.bukkit.entity.Player; import javax.inject.Inject; @@ -38,7 +39,7 @@ public class AsyncAddEmail implements AsynchronousProcess { PlayerAuth auth = playerCache.getAuth(playerName); final String currentEmail = auth.getEmail(); - if (currentEmail != null && !"your@email.com".equals(currentEmail)) { + if (!Utils.isEmailEmpty(currentEmail)) { service.send(player, MessageKey.USAGE_CHANGE_EMAIL); } else if (!validationService.validateEmail(email)) { service.send(player, MessageKey.INVALID_EMAIL); diff --git a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java index fa0c76ab..70f68480 100644 --- a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java @@ -25,7 +25,7 @@ import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.util.PlayerUtils; -import fr.xephi.authme.util.StringUtils; +import fr.xephi.authme.util.Utils; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -228,8 +228,7 @@ public class AsynchronousLogin implements AsynchronousProcess { displayOtherAccounts(auths, player); final String email = auth.getEmail(); - if (service.getProperty(EmailSettings.RECALL_PLAYERS) - && (StringUtils.isEmpty(email) || "your@email.com".equalsIgnoreCase(email))) { + if (service.getProperty(EmailSettings.RECALL_PLAYERS) && Utils.isEmailEmpty(email)) { service.send(player, MessageKey.ADD_EMAIL_MESSAGE); } diff --git a/src/main/java/fr/xephi/authme/service/ValidationService.java b/src/main/java/fr/xephi/authme/service/ValidationService.java index 9511c6e3..725575be 100644 --- a/src/main/java/fr/xephi/authme/service/ValidationService.java +++ b/src/main/java/fr/xephi/authme/service/ValidationService.java @@ -15,6 +15,7 @@ import fr.xephi.authme.settings.properties.ProtectionSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; import fr.xephi.authme.util.PlayerUtils; +import fr.xephi.authme.util.StringUtils; import fr.xephi.authme.util.Utils; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -90,7 +91,7 @@ public class ValidationService implements Reloadable { * @return true if the email is valid, false otherwise */ public boolean validateEmail(String email) { - if (!email.contains("@") || email.endsWith("@") || "your@email.com".equalsIgnoreCase(email)) { + if (Utils.isEmailEmpty(email) || !StringUtils.isInsideString('@', email)) { return false; } final String emailDomain = email.split("@")[1]; diff --git a/src/main/java/fr/xephi/authme/util/Utils.java b/src/main/java/fr/xephi/authme/util/Utils.java index 4d6983df..99520c35 100644 --- a/src/main/java/fr/xephi/authme/util/Utils.java +++ b/src/main/java/fr/xephi/authme/util/Utils.java @@ -88,4 +88,14 @@ public final class Utils { return Runtime.getRuntime().availableProcessors(); } + /** + * Returns whether the given email is empty or equal to the standard "undefined" email address. + * + * @param email the email to check + * + * @return true if the email is empty + */ + public static boolean isEmailEmpty(String email) { + return StringUtils.isEmpty(email) || "your@email.com".equalsIgnoreCase(email); + } } diff --git a/src/test/java/fr/xephi/authme/util/UtilsTest.java b/src/test/java/fr/xephi/authme/util/UtilsTest.java index cbb64f37..ce8675f4 100644 --- a/src/test/java/fr/xephi/authme/util/UtilsTest.java +++ b/src/test/java/fr/xephi/authme/util/UtilsTest.java @@ -22,7 +22,7 @@ import static org.mockito.Mockito.verifyZeroInteractions; public class UtilsTest { @BeforeClass - public static void setAuthmeInstance() { + public static void initLogger() { TestHelper.setupLogger(); } @@ -105,4 +105,16 @@ public class UtilsTest { assertThat(Utils.isClassLoaded("org.bukkit.event.player.PlayerFishEvent"), equalTo(true)); assertThat(Utils.isClassLoaded("com.someclass.doesnot.exist"), equalTo(false)); } + + @Test + public void shouldDetectIfEmailIsEmpty() { + // given / when / then + assertThat(Utils.isEmailEmpty(""), equalTo(true)); + assertThat(Utils.isEmailEmpty(null), equalTo(true)); + assertThat(Utils.isEmailEmpty("your@email.com"), equalTo(true)); + assertThat(Utils.isEmailEmpty("Your@Email.com"), equalTo(true)); + + assertThat(Utils.isEmailEmpty("my@example.org"), equalTo(false)); + assertThat(Utils.isEmailEmpty("hey"), equalTo(false)); + } }