* #1119 new permission and email hider * Updated commands.md * Improved email hiding method * Revert "Improved email hiding method" This reverts commit cb60d7b * New config option, updated tests, config.md and permission_nodes.md * Moved to service import, fixed typo and updated config.md * Removed unused imports O.o
This commit is contained in:
@@ -456,6 +456,7 @@ public class CommandInitializer {
|
||||
.labels("show", "myemail")
|
||||
.description("Show Email")
|
||||
.detailedDescription("Show your current email address.")
|
||||
.permission(PlayerPermission.SEE_EMAIL)
|
||||
.executableCommand(ShowEmailCommand.class)
|
||||
.register();
|
||||
|
||||
|
||||
@@ -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.settings.properties.SecuritySettings;
|
||||
import fr.xephi.authme.util.Utils;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@@ -26,9 +27,22 @@ public class ShowEmailCommand extends PlayerCommand {
|
||||
public void runCommand(Player player, List<String> arguments) {
|
||||
PlayerAuth auth = playerCache.getAuth(player.getName());
|
||||
if (auth != null && !Utils.isEmailEmpty(auth.getEmail())) {
|
||||
commonService.send(player, MessageKey.EMAIL_SHOW, auth.getEmail());
|
||||
if(commonService.getProperty(SecuritySettings.USE_EMAIL_MASKING)){
|
||||
commonService.send(player, MessageKey.EMAIL_SHOW, emailMask(auth.getEmail()));
|
||||
} else {
|
||||
commonService.send(player, MessageKey.EMAIL_SHOW, auth.getEmail());
|
||||
}
|
||||
} else {
|
||||
commonService.send(player, MessageKey.SHOW_NO_EMAIL);
|
||||
}
|
||||
}
|
||||
|
||||
private String emailMask(String email){
|
||||
String[] frag = email.split("@"); //Split id and domain
|
||||
int sid = frag[0].length() / 3 + 1; //Define the id view (required length >= 1)
|
||||
int sdomain = frag[1].length() / 3; //Define the domain view (required length >= 0)
|
||||
String id = frag[0].substring(0, sid) + "***"; //Build the id
|
||||
String domain = "***" + frag[1].substring(sdomain); //Build the domain
|
||||
return id + "@" + domain;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,11 @@ public enum PlayerPermission implements PermissionNode {
|
||||
*/
|
||||
CHANGE_PASSWORD("authme.player.changepassword"),
|
||||
|
||||
/**
|
||||
* Command permission to see the own email address.
|
||||
*/
|
||||
SEE_EMAIL("authme.player.email.see"),
|
||||
|
||||
/**
|
||||
* Command permission to add an email address.
|
||||
*/
|
||||
|
||||
@@ -132,6 +132,15 @@ public final class SecuritySettings implements SettingsHolder {
|
||||
public static final Property<Integer> EMAIL_RECOVERY_COOLDOWN_SECONDS =
|
||||
newProperty("Security.emailRecovery.cooldown", 60);
|
||||
|
||||
@Comment({
|
||||
"The maill shown using /email show will be partially hidden",
|
||||
"E.g. (if enabled)",
|
||||
" original email: my.email@example.com",
|
||||
" hidden email: my.***@***mple.com"
|
||||
})
|
||||
public static final Property<Boolean> USE_EMAIL_MASKING =
|
||||
newProperty("Security.privacy.enableEmailMasking", false);
|
||||
|
||||
private SecuritySettings() {
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,9 @@ commands:
|
||||
authme:
|
||||
description: AuthMe op commands
|
||||
usage: /authme register|unregister|forcelogin|password|lastlogin|accounts|email|setemail|getip|spawn|setspawn|firstspawn|setfirstspawn|purge|purgeplayer|backup|resetpos|purgebannedplayers|switchantibot|reload|version|converter|messages|debug
|
||||
email:
|
||||
description: Add email or recover password
|
||||
usage: /email show|add|change|recover|code|setpassword
|
||||
login:
|
||||
description: Login command
|
||||
usage: /login <password>
|
||||
@@ -43,9 +46,6 @@ commands:
|
||||
aliases:
|
||||
- changepass
|
||||
- cp
|
||||
email:
|
||||
description: Add email or recover password
|
||||
usage: /email show|add|change|recover|code|setpassword
|
||||
captcha:
|
||||
description: Captcha Command
|
||||
usage: /captcha <captcha>
|
||||
@@ -213,6 +213,7 @@ permissions:
|
||||
authme.player.email.add: true
|
||||
authme.player.email.change: true
|
||||
authme.player.email.recover: true
|
||||
authme.player.email.see: true
|
||||
authme.player.login: true
|
||||
authme.player.logout: true
|
||||
authme.player.register: true
|
||||
@@ -233,6 +234,7 @@ permissions:
|
||||
authme.player.email.add: true
|
||||
authme.player.email.change: true
|
||||
authme.player.email.recover: true
|
||||
authme.player.email.see: true
|
||||
authme.player.email.add:
|
||||
description: Command permission to add an email address.
|
||||
default: true
|
||||
@@ -242,6 +244,9 @@ permissions:
|
||||
authme.player.email.recover:
|
||||
description: Command permission to recover an account using its email address.
|
||||
default: true
|
||||
authme.player.email.see:
|
||||
description: Command permission to see the own email address.
|
||||
default: true
|
||||
authme.player.login:
|
||||
description: Command permission to login.
|
||||
default: true
|
||||
@@ -258,5 +263,6 @@ permissions:
|
||||
description: Command permission to unregister.
|
||||
default: true
|
||||
authme.vip:
|
||||
description: When the server is full and someone with this permission joins the server, someone will be kicked.
|
||||
description: When the server is full and someone with this permission joins the
|
||||
server, someone will be kicked.
|
||||
default: op
|
||||
|
||||
@@ -4,6 +4,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.settings.properties.SecuritySettings;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -30,7 +31,7 @@ public class ShowEmailCommandTest {
|
||||
private ShowEmailCommand command;
|
||||
|
||||
@Mock
|
||||
private CommonService commandService;
|
||||
private CommonService commonService;
|
||||
|
||||
@Mock
|
||||
private PlayerCache playerCache;
|
||||
@@ -41,12 +42,28 @@ public class ShowEmailCommandTest {
|
||||
Player sender = mock(Player.class);
|
||||
given(sender.getName()).willReturn(USERNAME);
|
||||
given(playerCache.getAuth(USERNAME)).willReturn(newAuthWithEmail(CURRENT_EMAIL));
|
||||
given(commonService.getProperty(SecuritySettings.USE_EMAIL_MASKING)).willReturn(false);
|
||||
|
||||
// when
|
||||
command.executeCommand(sender, Collections.emptyList());
|
||||
|
||||
// then
|
||||
verify(commandService).send(sender, MessageKey.EMAIL_SHOW, CURRENT_EMAIL);
|
||||
verify(commonService).send(sender, MessageKey.EMAIL_SHOW, CURRENT_EMAIL);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldShowHiddenEmailMessage() {
|
||||
// given
|
||||
Player sender = mock(Player.class);
|
||||
given(sender.getName()).willReturn(USERNAME);
|
||||
given(playerCache.getAuth(USERNAME)).willReturn(newAuthWithEmail(CURRENT_EMAIL));
|
||||
given(commonService.getProperty(SecuritySettings.USE_EMAIL_MASKING)).willReturn(true);
|
||||
|
||||
// when
|
||||
command.executeCommand(sender, Collections.emptyList());
|
||||
|
||||
// then
|
||||
verify(commonService).send(sender, MessageKey.EMAIL_SHOW, "my.***@***mple.com");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -60,7 +77,7 @@ public class ShowEmailCommandTest {
|
||||
command.executeCommand(sender, Collections.emptyList());
|
||||
|
||||
// then
|
||||
verify(commandService).send(sender, MessageKey.SHOW_NO_EMAIL);
|
||||
verify(commonService).send(sender, MessageKey.SHOW_NO_EMAIL);
|
||||
}
|
||||
|
||||
private static PlayerAuth newAuthWithEmail(String email) {
|
||||
|
||||
Reference in New Issue
Block a user