mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-11-24 11:15:19 +01:00
Create enum classes for permission nodes
This commit is contained in:
parent
a1a14aa760
commit
e519906dc5
@ -0,0 +1,55 @@
|
||||
package fr.xephi.authme.permission;
|
||||
|
||||
/**
|
||||
* AuthMe admin permissions.
|
||||
*/
|
||||
public enum AdminPermission implements PermissionsNode {
|
||||
|
||||
REGISTER("authme.admin.register"),
|
||||
|
||||
UNREGISTER("authme.admin.unregister"),
|
||||
|
||||
FORCE_LOGIN("authme.admin.forcelogin"),
|
||||
|
||||
CHANGE_PASSWORD("authme.admin.changepassword"),
|
||||
|
||||
LAST_LOGIN("authme.admin.lastlogin"),
|
||||
|
||||
ACCOUNTS("authme.admin.accounts"),
|
||||
|
||||
GET_EMAIL("authme.admin.getemail"),
|
||||
|
||||
CHANGE_EMAIL("authme.admin.chgemail"),
|
||||
|
||||
GET_IP("authme.admin.getip"),
|
||||
|
||||
SPAWN("authme.admin.spawn"),
|
||||
|
||||
SET_SPAWN("authme.admin.setspawn"),
|
||||
|
||||
FIRST_SPAWN("authme.admin.firstspawn"),
|
||||
|
||||
SET_FIRST_SPAWN("authme.admin.setfirstspawn"),
|
||||
|
||||
PURGE("authme.admin.purge"),
|
||||
|
||||
PURGE_LAST_POSITION("authme.admin.purgelastpos"),
|
||||
|
||||
PURGE_BANNED_PLAYERS("authme.admin.purgebannedplayers"),
|
||||
|
||||
SWITCH_ANTIBOT("authme.admin.switchantibot"),
|
||||
|
||||
RELOAD("authme.admin.reload");
|
||||
|
||||
private String node;
|
||||
|
||||
@Override
|
||||
public String getNode() {
|
||||
return node;
|
||||
}
|
||||
|
||||
AdminPermission(String node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
}
|
@ -325,6 +325,19 @@ public class PermissionsManager {
|
||||
return hasPermission(player, permsNode, player.isOp());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the player has permission for the given permissions node. If no permissions system is used,
|
||||
* the player has to be OP in order to have the permission.
|
||||
*
|
||||
* @param player The player.
|
||||
* @param permissionsNode The permissions node to verify.
|
||||
*
|
||||
* @return True if the player has the permission, false otherwise.
|
||||
*/
|
||||
public boolean hasPermission(Player player, PermissionsNode permissionsNode) {
|
||||
return hasPermission(player, permissionsNode.getNode(), player.isOp());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a player has permission.
|
||||
*
|
||||
|
@ -0,0 +1,11 @@
|
||||
package fr.xephi.authme.permission;
|
||||
|
||||
/**
|
||||
* Common interface for AuthMe permission nodes.
|
||||
*/
|
||||
public interface PermissionsNode {
|
||||
|
||||
/** Return the node of the permission, e.g. "authme.unregister". */
|
||||
String getNode();
|
||||
|
||||
}
|
52
src/main/java/fr/xephi/authme/permission/UserPermission.java
Normal file
52
src/main/java/fr/xephi/authme/permission/UserPermission.java
Normal file
@ -0,0 +1,52 @@
|
||||
package fr.xephi.authme.permission;
|
||||
|
||||
/**
|
||||
* AuthMe user permission nodes.
|
||||
*/
|
||||
public enum UserPermission implements PermissionsNode {
|
||||
|
||||
BYPASS_ANTIBOT("authme.bypassantibot"),
|
||||
|
||||
IS_VIP("authme.vip"),
|
||||
|
||||
LOGIN("authme.login"),
|
||||
|
||||
LOGOUT("authme.logout"),
|
||||
|
||||
REGISTER("authme.register"),
|
||||
|
||||
UNREGISTER("authme.unregister"),
|
||||
|
||||
CHANGE_PASSWORD("authme.changepassword"),
|
||||
|
||||
ADD_EMAIL("authme.email.add"),
|
||||
|
||||
CHANGE_EMAIL("authme.email.change"),
|
||||
|
||||
RECOVER_EMAIL("authme.email.recover"),
|
||||
|
||||
CAPTCHA("authme.captcha"),
|
||||
|
||||
CONVERTER("authme.converter"),
|
||||
|
||||
CAN_LOGIN_BE_FORCED("authme.canbeforced"),
|
||||
|
||||
BYPASS_FORCE_SURVIVAL("authme.bypassforcesurvival"),
|
||||
|
||||
ALLOW_MULTIPLE_ACCOUNTS("authme.allow2accounts"),
|
||||
|
||||
SEE_OTHER_ACCOUNTS("authme.seeOtherAccounts");
|
||||
|
||||
private String node;
|
||||
|
||||
@Override
|
||||
public String getNode() {
|
||||
return node;
|
||||
}
|
||||
|
||||
UserPermission(String node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package fr.xephi.authme.permission;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
/**
|
||||
* Test for {@link AdminPermission}.
|
||||
*/
|
||||
public class AdminPermissionTest {
|
||||
|
||||
@Test
|
||||
public void shouldStartWithAuthMeAdminPrefix() {
|
||||
// given
|
||||
String requiredPrefix = "authme.admin.";
|
||||
|
||||
// when/then
|
||||
for (AdminPermission perm : AdminPermission.values()) {
|
||||
if (!perm.getNode().startsWith(requiredPrefix)) {
|
||||
fail("The permission '" + perm + "' does not start with the required prefix '" + requiredPrefix + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHaveUniqueNodes() {
|
||||
// given
|
||||
Set<String> nodes = new HashSet<>();
|
||||
|
||||
// when/then
|
||||
for (AdminPermission perm : AdminPermission.values()) {
|
||||
if (nodes.contains(perm.getNode())) {
|
||||
fail("More than one enum value defines the node '" + perm.getNode() + "'");
|
||||
}
|
||||
nodes.add(perm.getNode());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package fr.xephi.authme.permission;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
/**
|
||||
* Test for {@link UserPermission}.
|
||||
*/
|
||||
public class UserPermissionTest {
|
||||
|
||||
@Test
|
||||
public void shouldStartWithRegularAuthMePrefix() {
|
||||
// given
|
||||
String requiredPrefix = "authme.";
|
||||
String adminPrefix = "authme.admin";
|
||||
|
||||
// when/then
|
||||
for (UserPermission perm : UserPermission.values()) {
|
||||
if (!perm.getNode().startsWith(requiredPrefix)) {
|
||||
fail("The permission '" + perm + "' does not start with the required prefix '" + requiredPrefix + "'");
|
||||
} else if (perm.getNode().startsWith(adminPrefix)) {
|
||||
fail("The permission '" + perm + "' should not use a node with the admin-specific prefix '"
|
||||
+ adminPrefix + "'");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHaveUniqueNodes() {
|
||||
// given
|
||||
Set<String> nodes = new HashSet<>();
|
||||
|
||||
// when/then
|
||||
for (UserPermission perm : UserPermission.values()) {
|
||||
if (nodes.contains(perm.getNode())) {
|
||||
fail("More than one enum value defines the node '" + perm.getNode() + "'");
|
||||
}
|
||||
nodes.add(perm.getNode());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user