#427 Replace registration settings with one registration type property
- Merge "useEmail" / "usePasswordConfirmation" / "useEmailConfirmation" settings into enum property - Migrate old settings
This commit is contained in:
@@ -9,6 +9,8 @@ import fr.xephi.authme.ConsoleLogger;
|
||||
import fr.xephi.authme.initialization.DataFolder;
|
||||
import fr.xephi.authme.output.LogLevel;
|
||||
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
||||
import fr.xephi.authme.settings.properties.RegistrationArgumentType;
|
||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -67,6 +69,7 @@ public class SettingsMigrationService extends PlainMigrationService {
|
||||
| changeBooleanSettingToLogLevelProperty(resource)
|
||||
| hasOldHelpHeaderProperty(resource)
|
||||
| hasSupportOldPasswordProperty(resource)
|
||||
| convertToRegistrationType(resource)
|
||||
|| hasDeprecatedProperties(resource);
|
||||
}
|
||||
|
||||
@@ -224,6 +227,34 @@ public class SettingsMigrationService extends PlainMigrationService {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean convertToRegistrationType(PropertyResource resource) {
|
||||
if (RegistrationSettings.REGISTRATION_TYPE.isPresent(resource)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean useEmail = newProperty("settings.registration.enableEmailRegistrationSystem", false).getValue(resource);
|
||||
String useConfirmationPath = useEmail
|
||||
? "settings.registration.doubleEmailCheck"
|
||||
: "settings.restrictions.enablePasswordConfirmation";
|
||||
boolean hasConfirmation = newProperty(useConfirmationPath, false).getValue(resource);
|
||||
|
||||
RegistrationArgumentType registerType;
|
||||
if (useEmail) {
|
||||
registerType = hasConfirmation
|
||||
? RegistrationArgumentType.EMAIL_WITH_CONFIRMATION
|
||||
: RegistrationArgumentType.EMAIL;
|
||||
} else {
|
||||
registerType = hasConfirmation
|
||||
? RegistrationArgumentType.PASSWORD_WITH_CONFIRMATION
|
||||
: RegistrationArgumentType.PASSWORD;
|
||||
}
|
||||
|
||||
ConsoleLogger.warning("Merging old registration settings into '"
|
||||
+ RegistrationSettings.REGISTRATION_TYPE.getPath() + "'");
|
||||
resource.setValue(RegistrationSettings.REGISTRATION_TYPE.getPath(), registerType);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for an old property path and moves it to a new path if present.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package fr.xephi.authme.settings.properties;
|
||||
|
||||
/**
|
||||
* Type of arguments used for the login command.
|
||||
*/
|
||||
public enum RegistrationArgumentType {
|
||||
|
||||
/** /register [password] */
|
||||
PASSWORD(Execution.PASSWORD, 1),
|
||||
|
||||
/** /register [password] [password] */
|
||||
PASSWORD_WITH_CONFIRMATION(Execution.PASSWORD, 2),
|
||||
|
||||
/** /register [email] */
|
||||
EMAIL(Execution.EMAIL, 1),
|
||||
|
||||
/** /register [email] [email] */
|
||||
EMAIL_WITH_CONFIRMATION(Execution.EMAIL, 2);
|
||||
|
||||
// TODO #427: PASSWORD_WITH_EMAIL(PASSWORD, 2);
|
||||
|
||||
private final Execution execution;
|
||||
private final int requiredNumberOfArgs;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param execution the registration process
|
||||
* @param requiredNumberOfArgs the required number of arguments
|
||||
*/
|
||||
RegistrationArgumentType(Execution execution, int requiredNumberOfArgs) {
|
||||
this.execution = execution;
|
||||
this.requiredNumberOfArgs = requiredNumberOfArgs;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the registration execution that is used for this argument type
|
||||
*/
|
||||
public Execution getExecution() {
|
||||
return execution;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return number of arguments required to process the register command
|
||||
*/
|
||||
public int getRequiredNumberOfArgs() {
|
||||
return requiredNumberOfArgs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registration execution (the type of registration).
|
||||
*/
|
||||
public enum Execution {
|
||||
|
||||
PASSWORD,
|
||||
EMAIL
|
||||
|
||||
}
|
||||
}
|
||||
@@ -24,16 +24,12 @@ public class RegistrationSettings implements SettingsHolder {
|
||||
public static final Property<Boolean> FORCE =
|
||||
newProperty("settings.registration.force", true);
|
||||
|
||||
@Comment("Do we replace password registration by an email registration method?")
|
||||
public static final Property<Boolean> USE_EMAIL_REGISTRATION =
|
||||
newProperty("settings.registration.enableEmailRegistrationSystem", false);
|
||||
|
||||
@Comment({
|
||||
"Enable double check of email when you register",
|
||||
"when it's true, registration requires that kind of command:",
|
||||
"/register <email> <confirmEmail>"})
|
||||
public static final Property<Boolean> ENABLE_CONFIRM_EMAIL =
|
||||
newProperty("settings.registration.doubleEmailCheck", false);
|
||||
"Type of registration: PASSWORD, PASSWORD_WITH_CONFIRMATION, EMAIL",
|
||||
"EMAIL_WITH_CONFIRMATION, PASSWORD_WITH_EMAIL"
|
||||
})
|
||||
public static final Property<RegistrationArgumentType> REGISTRATION_TYPE =
|
||||
newProperty(RegistrationArgumentType.class, "settings.registration.type", RegistrationArgumentType.PASSWORD_WITH_CONFIRMATION);
|
||||
|
||||
@Comment({
|
||||
"Do we force kick a player after a successful registration?",
|
||||
|
||||
@@ -126,13 +126,6 @@ public class RestrictionSettings implements SettingsHolder {
|
||||
public static final Property<Integer> ALLOWED_MOVEMENT_RADIUS =
|
||||
newProperty("settings.restrictions.allowedMovementRadius", 100);
|
||||
|
||||
@Comment({
|
||||
"Enable double check of password when you register",
|
||||
"when it's true, registration requires that kind of command:",
|
||||
"/register <password> <confirmPassword>"})
|
||||
public static final Property<Boolean> ENABLE_PASSWORD_CONFIRMATION =
|
||||
newProperty("settings.restrictions.enablePasswordConfirmation", true);
|
||||
|
||||
@Comment("Should we protect the player inventory before logging in? Requires ProtocolLib.")
|
||||
public static final Property<Boolean> PROTECT_INVENTORY_BEFORE_LOGIN =
|
||||
newProperty("settings.restrictions.ProtectInventoryBeforeLogIn", true);
|
||||
|
||||
Reference in New Issue
Block a user