mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2024-12-23 17:17:36 +01:00
Merge remote-tracking branch 'origin/unit-tests' into unit-tests
Conflicts: src/main/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommand.java src/test/java/fr/xephi/authme/AuthMeMockUtil.java
This commit is contained in:
commit
f06f7d8c77
2
pom.xml
2
pom.xml
@ -606,7 +606,7 @@
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- jUnit Testing Library -->
|
||||
<!-- Unit Testing Libraries -->
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
|
@ -60,6 +60,7 @@ import net.milkbowl.vault.permission.Permission;
|
||||
import net.minelink.ctplus.CombatTagPlus;
|
||||
|
||||
/**
|
||||
* The AuthMe main class.
|
||||
*/
|
||||
public class AuthMe extends JavaPlugin {
|
||||
|
||||
@ -506,8 +507,8 @@ public class AuthMe extends JavaPlugin {
|
||||
/**
|
||||
* Get the permissions manager instance.
|
||||
*
|
||||
|
||||
* @return Permissions Manager instance. */
|
||||
* @return Permissions Manager instance.
|
||||
*/
|
||||
public PermissionsManager getPermissionsManager() {
|
||||
return this.permsMan;
|
||||
}
|
||||
@ -649,10 +650,6 @@ public class AuthMe extends JavaPlugin {
|
||||
}
|
||||
|
||||
// Save Player Data
|
||||
/**
|
||||
* Method savePlayer.
|
||||
* @param player Player
|
||||
*/
|
||||
public void savePlayer(Player player) {
|
||||
if ((Utils.isNPC(player)) || (Utils.isUnrestricted(player))) {
|
||||
return;
|
||||
@ -681,11 +678,6 @@ public class AuthMe extends JavaPlugin {
|
||||
}
|
||||
|
||||
// Select the player to kick when a vip player join the server when full
|
||||
/**
|
||||
* Method generateKickPlayer.
|
||||
* @param collection Collection<? extends Player>
|
||||
|
||||
* @return Player */
|
||||
public Player generateKickPlayer(Collection<? extends Player> collection) {
|
||||
Player player = null;
|
||||
for (Player p : collection) {
|
||||
@ -730,11 +722,6 @@ public class AuthMe extends JavaPlugin {
|
||||
}
|
||||
|
||||
// Return the spawn location of a player
|
||||
/**
|
||||
* Method getSpawnLocation.
|
||||
* @param player Player
|
||||
|
||||
* @return Location */
|
||||
public Location getSpawnLocation(Player player) {
|
||||
World world = player.getWorld();
|
||||
String[] spawnPriority = Settings.spawnPriority.split(",");
|
||||
@ -757,21 +744,11 @@ public class AuthMe extends JavaPlugin {
|
||||
}
|
||||
|
||||
// Return the default spawnpoint of a world
|
||||
/**
|
||||
* Method getDefaultSpawn.
|
||||
* @param world World
|
||||
|
||||
* @return Location */
|
||||
private Location getDefaultSpawn(World world) {
|
||||
return world.getSpawnLocation();
|
||||
}
|
||||
|
||||
// Return the multiverse spawnpoint of a world
|
||||
/**
|
||||
* Method getMultiverseSpawn.
|
||||
* @param world World
|
||||
|
||||
* @return Location */
|
||||
private Location getMultiverseSpawn(World world) {
|
||||
if (multiverse != null && Settings.multiverse) {
|
||||
try {
|
||||
@ -784,10 +761,6 @@ public class AuthMe extends JavaPlugin {
|
||||
}
|
||||
|
||||
// Return the essentials spawnpoint
|
||||
/**
|
||||
* Method getEssentialsSpawn.
|
||||
|
||||
* @return Location */
|
||||
private Location getEssentialsSpawn() {
|
||||
if (essentialsSpawn != null) {
|
||||
return essentialsSpawn;
|
||||
@ -796,11 +769,6 @@ public class AuthMe extends JavaPlugin {
|
||||
}
|
||||
|
||||
// Return the authme soawnpoint
|
||||
/**
|
||||
* Method getAuthMeSpawn.
|
||||
* @param player Player
|
||||
|
||||
* @return Location */
|
||||
private Location getAuthMeSpawn(Player player) {
|
||||
if ((!database.isAuthAvailable(player.getName().toLowerCase()) || !player.hasPlayedBefore()) && (Spawn.getInstance().getFirstSpawn() != null)) {
|
||||
return Spawn.getInstance().getFirstSpawn();
|
||||
@ -811,19 +779,11 @@ public class AuthMe extends JavaPlugin {
|
||||
return player.getWorld().getSpawnLocation();
|
||||
}
|
||||
|
||||
/**
|
||||
* Method switchAntiBotMod.
|
||||
* @param mode boolean
|
||||
*/
|
||||
public void switchAntiBotMod(boolean mode) {
|
||||
this.antibotMod = mode;
|
||||
Settings.switchAntiBotMod(mode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getAntiBotModMode.
|
||||
|
||||
* @return boolean */
|
||||
public boolean getAntiBotModMode() {
|
||||
return this.antibotMod;
|
||||
}
|
||||
@ -850,12 +810,7 @@ public class AuthMe extends JavaPlugin {
|
||||
}, 1, 1200 * Settings.delayRecall);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method replaceAllInfos.
|
||||
* @param message String
|
||||
* @param player Player
|
||||
|
||||
* @return String */
|
||||
|
||||
public String replaceAllInfos(String message, Player player) {
|
||||
int playersOnline = Utils.getOnlinePlayers().size();
|
||||
message = message.replace("&", "\u00a7");
|
||||
@ -871,11 +826,7 @@ public class AuthMe extends JavaPlugin {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getIP.
|
||||
* @param player Player
|
||||
|
||||
* @return String */
|
||||
|
||||
public String getIP(Player player) {
|
||||
String name = player.getName().toLowerCase();
|
||||
String ip = player.getAddress().getAddress().getHostAddress();
|
||||
@ -889,12 +840,7 @@ public class AuthMe extends JavaPlugin {
|
||||
return ip;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method isLoggedIp.
|
||||
* @param name String
|
||||
* @param ip String
|
||||
|
||||
* @return boolean */
|
||||
|
||||
public boolean isLoggedIp(String name, String ip) {
|
||||
int count = 0;
|
||||
for (Player player : Utils.getOnlinePlayers()) {
|
||||
@ -904,12 +850,7 @@ public class AuthMe extends JavaPlugin {
|
||||
return count >= Settings.getMaxLoginPerIp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method hasJoinedIp.
|
||||
* @param name String
|
||||
* @param ip String
|
||||
|
||||
* @return boolean */
|
||||
|
||||
public boolean hasJoinedIp(String name, String ip) {
|
||||
int count = 0;
|
||||
for (Player player : Utils.getOnlinePlayers()) {
|
||||
@ -919,21 +860,18 @@ public class AuthMe extends JavaPlugin {
|
||||
return count >= Settings.getMaxJoinPerIp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getModuleManager.
|
||||
|
||||
* @return ModuleManager */
|
||||
|
||||
public ModuleManager getModuleManager() {
|
||||
return moduleManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Player real IP through VeryGames method
|
||||
* Gets a player's real IP through VeryGames method.
|
||||
*
|
||||
* @param player
|
||||
* player
|
||||
|
||||
* @return String */
|
||||
* @param player the player to process
|
||||
*
|
||||
* @return the real IP of the player
|
||||
*/
|
||||
@Deprecated
|
||||
public String getVeryGamesIP(Player player) {
|
||||
String realIP = player.getAddress().getAddress().getHostAddress();
|
||||
@ -952,31 +890,19 @@ public class AuthMe extends JavaPlugin {
|
||||
return realIP;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getCountryCode.
|
||||
* @param ip String
|
||||
|
||||
* @return String */
|
||||
|
||||
@Deprecated
|
||||
public String getCountryCode(String ip) {
|
||||
return Utils.getCountryCode(ip);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getCountryName.
|
||||
* @param ip String
|
||||
|
||||
* @return String */
|
||||
|
||||
@Deprecated
|
||||
public String getCountryName(String ip) {
|
||||
return Utils.getCountryName(ip);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the command handler instance.
|
||||
*
|
||||
|
||||
* @return Command handler. */
|
||||
|
||||
public CommandHandler getCommandHandler() {
|
||||
return this.commandHandler;
|
||||
}
|
||||
@ -993,9 +919,7 @@ public class AuthMe extends JavaPlugin {
|
||||
* @param args
|
||||
* The command arguments (Bukkit).
|
||||
*
|
||||
|
||||
|
||||
* @return True if the command was executed, false otherwise. * @see org.bukkit.command.CommandExecutor#onCommand(CommandSender, Command, String, String[]) * @see org.bukkit.command.CommandExecutor#onCommand(CommandSender, Command, String, String[])
|
||||
* @return True if the command was executed, false otherwise.
|
||||
*/
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command cmd,
|
||||
@ -1012,9 +936,9 @@ public class AuthMe extends JavaPlugin {
|
||||
/**
|
||||
* Get the current installed AuthMeReloaded version name.
|
||||
*
|
||||
|
||||
* @return The version name of the currently installed AuthMeReloaded
|
||||
* instance. */
|
||||
* instance.
|
||||
*/
|
||||
public static String getVersionName() {
|
||||
return PLUGIN_VERSION_NAME;
|
||||
}
|
||||
@ -1022,9 +946,9 @@ public class AuthMe extends JavaPlugin {
|
||||
/**
|
||||
* Get the current installed AuthMeReloaded version code.
|
||||
*
|
||||
|
||||
* @return The version code of the currently installed AuthMeReloaded
|
||||
* instance. */
|
||||
* instance.
|
||||
*/
|
||||
public static int getVersionCode() {
|
||||
return PLUGIN_VERSION_CODE;
|
||||
}
|
||||
|
@ -24,12 +24,6 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
||||
public Log4JFilter() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Method filter.
|
||||
* @param record LogEvent
|
||||
|
||||
|
||||
* @return Result * @see org.apache.logging.log4j.core.Filter#filter(LogEvent) */
|
||||
@Override
|
||||
public Result filter(LogEvent record) {
|
||||
if (record == null) {
|
||||
@ -38,32 +32,12 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
||||
return validateMessage(record.getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
* Method filter.
|
||||
* @param arg0 Logger
|
||||
* @param arg1 Level
|
||||
* @param arg2 Marker
|
||||
* @param message String
|
||||
* @param arg4 Object[]
|
||||
|
||||
|
||||
* @return Result * @see org.apache.logging.log4j.core.Filter#filter(Logger, Level, Marker, String, Object[]) */
|
||||
@Override
|
||||
public Result filter(Logger arg0, Level arg1, Marker arg2, String message,
|
||||
Object... arg4) {
|
||||
return validateMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method filter.
|
||||
* @param arg0 Logger
|
||||
* @param arg1 Level
|
||||
* @param arg2 Marker
|
||||
* @param message Object
|
||||
* @param arg4 Throwable
|
||||
|
||||
|
||||
* @return Result * @see org.apache.logging.log4j.core.Filter#filter(Logger, Level, Marker, Object, Throwable) */
|
||||
@Override
|
||||
public Result filter(Logger arg0, Level arg1, Marker arg2, Object message,
|
||||
Throwable arg4) {
|
||||
@ -73,37 +47,17 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
||||
return validateMessage(message.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Method filter.
|
||||
* @param arg0 Logger
|
||||
* @param arg1 Level
|
||||
* @param arg2 Marker
|
||||
* @param message Message
|
||||
* @param arg4 Throwable
|
||||
|
||||
|
||||
* @return Result * @see org.apache.logging.log4j.core.Filter#filter(Logger, Level, Marker, Message, Throwable) */
|
||||
@Override
|
||||
public Result filter(Logger arg0, Level arg1, Marker arg2, Message message,
|
||||
Throwable arg4) {
|
||||
return validateMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getOnMatch.
|
||||
|
||||
|
||||
* @return Result * @see org.apache.logging.log4j.core.Filter#getOnMatch() */
|
||||
@Override
|
||||
public Result getOnMatch() {
|
||||
return Result.NEUTRAL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method getOnMismatch.
|
||||
|
||||
|
||||
* @return Result * @see org.apache.logging.log4j.core.Filter#getOnMismatch() */
|
||||
@Override
|
||||
public Result getOnMismatch() {
|
||||
return Result.NEUTRAL;
|
||||
@ -115,8 +69,9 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
||||
* data.
|
||||
*
|
||||
* @param message the Message object to verify
|
||||
|
||||
* @return the Result value */
|
||||
*
|
||||
* @return the Result value
|
||||
*/
|
||||
private static Result validateMessage(Message message) {
|
||||
if (message == null) {
|
||||
return Result.NEUTRAL;
|
||||
@ -129,8 +84,9 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter {
|
||||
* depending on whether the message contains sensitive AuthMe data.
|
||||
*
|
||||
* @param message the message to verify
|
||||
|
||||
* @return the Result value */
|
||||
*
|
||||
* @return the Result value
|
||||
*/
|
||||
private static Result validateMessage(String message) {
|
||||
if (message == null) {
|
||||
return Result.NEUTRAL;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package fr.xephi.authme.permission;
|
||||
|
||||
import com.nijiko.permissions.Group;
|
||||
import com.nijiko.permissions.PermissionHandler;
|
||||
import com.nijikokun.bukkit.Permissions.Permissions;
|
||||
import de.bananaco.bpermissions.api.ApiLayer;
|
||||
@ -339,8 +340,8 @@ public class PermissionsManager {
|
||||
* @return True if the player has permission.
|
||||
*/
|
||||
public boolean hasPermission(Player player, String permsNode, boolean def) {
|
||||
// If no permissions system is used, return the default value
|
||||
if(!isEnabled())
|
||||
// No permissions system is used, return default
|
||||
return def;
|
||||
|
||||
switch(this.permsType) {
|
||||
@ -389,17 +390,55 @@ public class PermissionsManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the current permissions system has group support.
|
||||
* If no permissions system is hooked, false will be returned.
|
||||
*
|
||||
* @return True if the current permissions system supports groups, false otherwise.
|
||||
*/
|
||||
public boolean hasGroupSupport() {
|
||||
// If no permissions system is used, return false
|
||||
if(!isEnabled())
|
||||
return false;
|
||||
|
||||
switch(this.permsType) {
|
||||
case PERMISSIONS_EX:
|
||||
case PERMISSIONS_BUKKIT:
|
||||
case B_PERMISSIONS:
|
||||
case ESSENTIALS_GROUP_MANAGER:
|
||||
case Z_PERMISSIONS:
|
||||
return true;
|
||||
|
||||
case VAULT:
|
||||
// Vault
|
||||
return vaultPerms.hasGroupSupport();
|
||||
|
||||
case PERMISSIONS:
|
||||
// Legacy permissions
|
||||
// FIXME: Supported by plugin, but addGroup and removeGroup haven't been implemented correctly yet!
|
||||
return false;
|
||||
|
||||
case NONE:
|
||||
// Not hooked into any permissions system, return false
|
||||
return false;
|
||||
|
||||
default:
|
||||
// Something went wrong, return false to prevent problems
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the permission groups of a player, if available.
|
||||
*
|
||||
* @param player The player.
|
||||
*
|
||||
* @return Permission groups.
|
||||
* @return Permission groups, or an empty list if this feature is not supported.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "rawtypes", "deprecation"})
|
||||
public List<String> getGroups(Player player) {
|
||||
// If no permissions system is used, return an empty list
|
||||
if(!isEnabled())
|
||||
// No permissions system is used, return an empty list
|
||||
return new ArrayList<>();
|
||||
|
||||
switch(this.permsType) {
|
||||
@ -410,12 +449,12 @@ public class PermissionsManager {
|
||||
|
||||
case PERMISSIONS_BUKKIT:
|
||||
// Permissions Bukkit
|
||||
// Permissions Bukkit doesn't support group, return an empty list
|
||||
// FIXME: Add support for this!
|
||||
return new ArrayList<>();
|
||||
|
||||
case B_PERMISSIONS:
|
||||
// bPermissions
|
||||
return Arrays.asList(ApiLayer.getGroups(player.getName(), CalculableType.USER, player.getName()));
|
||||
return Arrays.asList(ApiLayer.getGroups(player.getWorld().getName(), CalculableType.USER, player.getName()));
|
||||
|
||||
case ESSENTIALS_GROUP_MANAGER:
|
||||
// Essentials Group Manager
|
||||
@ -432,6 +471,18 @@ public class PermissionsManager {
|
||||
// Vault
|
||||
return Arrays.asList(vaultPerms.getPlayerGroups(player));
|
||||
|
||||
case PERMISSIONS:
|
||||
// Permissions
|
||||
// Create a list to put the groups in
|
||||
List<String> groups = new ArrayList<>();
|
||||
|
||||
// Get the groups and add each to the list
|
||||
for(Group group : this.defaultPerms.getGroups(player.getName()))
|
||||
groups.add(group.getName());
|
||||
|
||||
// Return the groups
|
||||
return groups;
|
||||
|
||||
case NONE:
|
||||
// Not hooked into any permissions system, return an empty list
|
||||
return new ArrayList<>();
|
||||
@ -443,17 +494,253 @@ public class PermissionsManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the permission group of a player, if supported.
|
||||
* Check whether the player is in the specified group.
|
||||
*
|
||||
* @param player The player.
|
||||
* @param groupName The group name.
|
||||
*
|
||||
* @return True if the player is in the specified group, false otherwise.
|
||||
* False is also returned if groups aren't supported by the used permissions system.
|
||||
*/
|
||||
public boolean inGroup(Player player, String groupName) {
|
||||
// If no permissions system is used, return false
|
||||
if(!isEnabled())
|
||||
return false;
|
||||
|
||||
switch(this.permsType) {
|
||||
case PERMISSIONS_EX:
|
||||
// Permissions Ex
|
||||
PermissionUser user = PermissionsEx.getUser(player);
|
||||
return user.inGroup(groupName);
|
||||
|
||||
case PERMISSIONS_BUKKIT:
|
||||
case Z_PERMISSIONS:
|
||||
// Get the current list of groups
|
||||
List<String> groupNames = getGroups(player);
|
||||
|
||||
// Check whether the list contains the group name, return the result
|
||||
for(String entry : groupNames)
|
||||
if(entry.equals(groupName))
|
||||
return true;
|
||||
return false;
|
||||
|
||||
case B_PERMISSIONS:
|
||||
// bPermissions
|
||||
return ApiLayer.hasGroup(player.getWorld().getName(), CalculableType.USER, player.getName(), groupName);
|
||||
|
||||
case ESSENTIALS_GROUP_MANAGER:
|
||||
// Essentials Group Manager
|
||||
final AnjoPermissionsHandler handler = groupManagerPerms.getWorldsHolder().getWorldPermissions(player);
|
||||
return handler != null && handler.inGroup(player.getName(), groupName);
|
||||
|
||||
case VAULT:
|
||||
// Vault
|
||||
return vaultPerms.playerInGroup(player, groupName);
|
||||
|
||||
case PERMISSIONS:
|
||||
// Permissions
|
||||
return this.defaultPerms.inGroup(player.getWorld().getName(), player.getName(), groupName);
|
||||
|
||||
case NONE:
|
||||
// Not hooked into any permissions system, return an empty list
|
||||
return false;
|
||||
|
||||
default:
|
||||
// Something went wrong, return an empty list to prevent problems
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the permission group of a player, if supported.
|
||||
*
|
||||
* @param player The player
|
||||
* @param groupName The name of the group.
|
||||
*
|
||||
* @return True if succeed, false otherwise.
|
||||
* False is also returned if this feature isn't supported for the current permissions system.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "rawtypes", "deprecation"})
|
||||
public boolean addGroup(Player player, String groupName) {
|
||||
// If no permissions system is used, return false
|
||||
if(!isEnabled())
|
||||
return false;
|
||||
|
||||
// Set the group the proper way
|
||||
switch(this.permsType) {
|
||||
case PERMISSIONS_EX:
|
||||
// Permissions Ex
|
||||
PermissionUser user = PermissionsEx.getUser(player);
|
||||
user.addGroup(groupName);
|
||||
return true;
|
||||
|
||||
case PERMISSIONS_BUKKIT:
|
||||
// Permissions Bukkit
|
||||
// Add the group to the user using a command
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "permissions player addgroup " + player.getName() + " " + groupName);
|
||||
|
||||
case B_PERMISSIONS:
|
||||
// bPermissions
|
||||
ApiLayer.addGroup(player.getWorld().getName(), CalculableType.USER, player.getName(), groupName);
|
||||
return true;
|
||||
|
||||
case ESSENTIALS_GROUP_MANAGER:
|
||||
// Essentials Group Manager
|
||||
// Add the group to the user using a command
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "manuaddsub " + player.getName() + " " + groupName);
|
||||
|
||||
case Z_PERMISSIONS:
|
||||
// zPermissions
|
||||
// Add the group to the user using a command
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "permissions player " + player.getName() + " addgroup " + groupName);
|
||||
|
||||
case VAULT:
|
||||
// Vault
|
||||
vaultPerms.playerAddGroup(player, groupName);
|
||||
return true;
|
||||
|
||||
case PERMISSIONS:
|
||||
// Permissions
|
||||
// FIXME: Add this method!
|
||||
//return this.defaultPerms.group
|
||||
|
||||
case NONE:
|
||||
// Not hooked into any permissions system, return false
|
||||
return false;
|
||||
|
||||
default:
|
||||
// Something went wrong, return false
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the permission groups of a player, if supported.
|
||||
*
|
||||
* @param player The player
|
||||
* @param groupNames The name of the groups to add.
|
||||
*
|
||||
* @return True if succeed, false otherwise.
|
||||
* False is also returned if this feature isn't supported for the current permissions system.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "rawtypes", "deprecation"})
|
||||
public boolean addGroups(Player player, List<String> groupNames) {
|
||||
// If no permissions system is used, return false
|
||||
if(!isEnabled())
|
||||
return false;
|
||||
|
||||
// Add each group to the user
|
||||
boolean result = true;
|
||||
for(String groupName : groupNames)
|
||||
if(!addGroup(player, groupName))
|
||||
result = false;
|
||||
|
||||
// Return the result
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the permission group of a player, if supported.
|
||||
*
|
||||
* @param player The player
|
||||
* @param groupName The name of the group.
|
||||
*
|
||||
* @return True if succeed, false otherwise.
|
||||
* False is also returned if this feature isn't supported for the current permissions system.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "rawtypes", "deprecation"})
|
||||
public boolean removeGroup(Player player, String groupName) {
|
||||
// If no permissions system is used, return false
|
||||
if(!isEnabled())
|
||||
return false;
|
||||
|
||||
// Set the group the proper way
|
||||
switch(this.permsType) {
|
||||
case PERMISSIONS_EX:
|
||||
// Permissions Ex
|
||||
PermissionUser user = PermissionsEx.getUser(player);
|
||||
user.removeGroup(groupName);
|
||||
return true;
|
||||
|
||||
case PERMISSIONS_BUKKIT:
|
||||
// Permissions Bukkit
|
||||
// Remove the group to the user using a command
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "permissions player removegroup " + player.getName() + " " + groupName);
|
||||
|
||||
case B_PERMISSIONS:
|
||||
// bPermissions
|
||||
ApiLayer.removeGroup(player.getWorld().getName(), CalculableType.USER, player.getName(), groupName);
|
||||
return true;
|
||||
|
||||
case ESSENTIALS_GROUP_MANAGER:
|
||||
// Essentials Group Manager
|
||||
// Remove the group to the user using a command
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "manudelsub " + player.getName() + " " + groupName);
|
||||
|
||||
case Z_PERMISSIONS:
|
||||
// zPermissions
|
||||
// Remove the group to the user using a command
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "permissions player " + player.getName() + " removegroup " + groupName);
|
||||
|
||||
case VAULT:
|
||||
// Vault
|
||||
vaultPerms.playerRemoveGroup(player, groupName);
|
||||
return true;
|
||||
|
||||
case PERMISSIONS:
|
||||
// Permissions
|
||||
// FIXME: Add this method!
|
||||
//return this.defaultPerms.group
|
||||
|
||||
case NONE:
|
||||
// Not hooked into any permissions system, return false
|
||||
return false;
|
||||
|
||||
default:
|
||||
// Something went wrong, return false
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the permission groups of a player, if supported.
|
||||
*
|
||||
* @param player The player
|
||||
* @param groupNames The name of the groups to add.
|
||||
*
|
||||
* @return True if succeed, false otherwise.
|
||||
* False is also returned if this feature isn't supported for the current permissions system.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "rawtypes", "deprecation"})
|
||||
public boolean removeGroups(Player player, List<String> groupNames) {
|
||||
// If no permissions system is used, return false
|
||||
if(!isEnabled())
|
||||
return false;
|
||||
|
||||
// Add each group to the user
|
||||
boolean result = true;
|
||||
for(String groupName : groupNames)
|
||||
if(!removeGroup(player, groupName))
|
||||
result = false;
|
||||
|
||||
// Return the result
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the permission group of a player, if supported.
|
||||
* This clears the current groups of the player.
|
||||
*
|
||||
* @param player The player
|
||||
* @param groupName The name of the group.
|
||||
*
|
||||
* @return True if succeed, false otherwise.
|
||||
* False is also returned if this feature isn't supported for the current permissions system.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "rawtypes", "deprecation"})
|
||||
public boolean setGroup(Player player, String groupName) {
|
||||
// If no permissions system is used, return false
|
||||
if(!isEnabled())
|
||||
// No permissions system is used, return false
|
||||
return false;
|
||||
|
||||
// Create a list of group names
|
||||
@ -470,8 +757,8 @@ public class PermissionsManager {
|
||||
|
||||
case PERMISSIONS_BUKKIT:
|
||||
// Permissions Bukkit
|
||||
// Permissions Bukkit doesn't support groups, return false
|
||||
return false;
|
||||
// Set the user's group using a command
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "permissions player setgroup " + player.getName() + " " + groupName);
|
||||
|
||||
case B_PERMISSIONS:
|
||||
// bPermissions
|
||||
@ -480,23 +767,27 @@ public class PermissionsManager {
|
||||
|
||||
case ESSENTIALS_GROUP_MANAGER:
|
||||
// Essentials Group Manager
|
||||
final AnjoPermissionsHandler handler = groupManagerPerms.getWorldsHolder().getWorldPermissions(player);
|
||||
if(handler == null)
|
||||
return false;
|
||||
// TODO: Write proper code here!
|
||||
//return Arrays.asList(handler.getGroups(player.getName()));
|
||||
// Clear the list of groups, add the player to the specified group afterwards using a command
|
||||
removeAllGroups(player);
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "manuadd " + player.getName() + " " + groupName);
|
||||
|
||||
case Z_PERMISSIONS:
|
||||
//zPermissions
|
||||
// TODO: Write proper code here!
|
||||
//return new ArrayList(zPermissionsService.getPlayerGroups(player.getName()));
|
||||
// Set the players group through the plugin commands
|
||||
return Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "permissions player " + player.getName() + " setgroup " + groupName);
|
||||
|
||||
case VAULT:
|
||||
// Vault
|
||||
// TODO: Clear the current list of groups?
|
||||
// Remove all current groups, add the player to the specified group afterwards
|
||||
removeAllGroups(player);
|
||||
vaultPerms.playerAddGroup(player, groupName);
|
||||
return true;
|
||||
|
||||
case PERMISSIONS:
|
||||
// Permissions
|
||||
// FIXME: Add this method!
|
||||
//return this.defaultPerms.group
|
||||
|
||||
case NONE:
|
||||
// Not hooked into any permissions system, return false
|
||||
return false;
|
||||
@ -507,6 +798,63 @@ public class PermissionsManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the permission groups of a player, if supported.
|
||||
* This clears the current groups of the player.
|
||||
*
|
||||
* @param player The player
|
||||
* @param groupNames The name of the groups to set.
|
||||
*
|
||||
* @return True if succeed, false otherwise.
|
||||
* False is also returned if this feature isn't supported for the current permissions system.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "rawtypes", "deprecation"})
|
||||
public boolean setGroups(Player player, List<String> groupNames) {
|
||||
// If no permissions system is used or if there's no group supplied, return false
|
||||
if(!isEnabled() || groupNames.size() <= 0)
|
||||
return false;
|
||||
|
||||
// Set the main group
|
||||
if(!setGroup(player, groupNames.get(0)))
|
||||
return false;
|
||||
|
||||
// Add the rest of the groups
|
||||
boolean result = true;
|
||||
for(int i = 1; i < groupNames.size(); i++) {
|
||||
// Get the group name
|
||||
String groupName = groupNames.get(0);
|
||||
|
||||
// Add this group
|
||||
if(!addGroup(player, groupName))
|
||||
result = false;
|
||||
}
|
||||
|
||||
// Return the result
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all groups of the specified player, if supported.
|
||||
* Systems like Essentials GroupManager don't allow all groups to be removed from a player, thus the user will stay
|
||||
* in it's primary group. All the subgroups are removed just fine.
|
||||
*
|
||||
* @param player The player to remove all groups from.
|
||||
*
|
||||
* @return True if succeed, false otherwise.
|
||||
* False will also be returned if this feature isn't supported for the used permissions system.
|
||||
*/
|
||||
public boolean removeAllGroups(Player player) {
|
||||
// If no permissions system is used, return false
|
||||
if(!isEnabled())
|
||||
return false;
|
||||
|
||||
// Get a list of current groups
|
||||
List<String> groupNames = getGroups(player);
|
||||
|
||||
// Remove each group
|
||||
return removeGroups(player, groupNames);
|
||||
}
|
||||
|
||||
public enum PermissionsSystemType {
|
||||
NONE("None"),
|
||||
PERMISSIONS_EX("PermissionsEx"),
|
||||
|
@ -7,6 +7,7 @@ import fr.xephi.authme.cache.auth.PlayerCache;
|
||||
import fr.xephi.authme.cache.limbo.LimboCache;
|
||||
import fr.xephi.authme.cache.limbo.LimboPlayer;
|
||||
import fr.xephi.authme.events.AuthMeTeleportEvent;
|
||||
import fr.xephi.authme.permission.PermissionsManager;
|
||||
import fr.xephi.authme.settings.Settings;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
@ -125,47 +126,51 @@ public class Utils {
|
||||
* @param group GroupType
|
||||
*/
|
||||
public static void setGroup(Player player, GroupType group) {
|
||||
if (!Settings.isPermissionCheckEnabled)
|
||||
if(!Settings.isPermissionCheckEnabled)
|
||||
return;
|
||||
if (plugin.vaultGroupManagement == null)
|
||||
return;
|
||||
String currentGroup;
|
||||
try {
|
||||
currentGroup = plugin.vaultGroupManagement.getPrimaryGroup(player);
|
||||
} catch (UnsupportedOperationException e) {
|
||||
ConsoleLogger.showError("Your permission plugin (" + plugin.vaultGroupManagement.getName() + ") doesn't support the Group system... unhook!");
|
||||
plugin.vaultGroupManagement = null;
|
||||
return;
|
||||
}
|
||||
switch (group) {
|
||||
case UNREGISTERED: {
|
||||
plugin.vaultGroupManagement.playerRemoveGroup(player, currentGroup);
|
||||
plugin.vaultGroupManagement.playerAddGroup(player, Settings.unRegisteredGroup);
|
||||
|
||||
// Get the permissions manager, and make sure it's valid
|
||||
PermissionsManager permsMan = plugin.getPermissionsManager();
|
||||
if(permsMan == null)
|
||||
ConsoleLogger.showError("Failed to access permissions manager instance, shutting down.");
|
||||
assert permsMan != null;
|
||||
|
||||
// Make sure group support is available
|
||||
if(!permsMan.hasGroupSupport())
|
||||
ConsoleLogger.showError("The current permissions system doesn't have group support, unable to set group!");
|
||||
|
||||
switch(group) {
|
||||
case UNREGISTERED:
|
||||
// Remove the other group type groups, set the current group
|
||||
permsMan.removeGroups(player, Arrays.asList(Settings.getRegisteredGroup, Settings.getUnloggedinGroup));
|
||||
permsMan.addGroup(player, Settings.unRegisteredGroup);
|
||||
break;
|
||||
}
|
||||
case REGISTERED: {
|
||||
plugin.vaultGroupManagement.playerRemoveGroup(player, currentGroup);
|
||||
plugin.vaultGroupManagement.playerAddGroup(player, Settings.getRegisteredGroup);
|
||||
|
||||
case REGISTERED:
|
||||
// Remove the other group type groups, set the current group
|
||||
permsMan.removeGroups(player, Arrays.asList(Settings.unRegisteredGroup, Settings.getUnloggedinGroup));
|
||||
permsMan.addGroup(player, Settings.getRegisteredGroup);
|
||||
break;
|
||||
}
|
||||
case NOTLOGGEDIN: {
|
||||
if (!useGroupSystem())
|
||||
break;
|
||||
plugin.vaultGroupManagement.playerRemoveGroup(player, currentGroup);
|
||||
plugin.vaultGroupManagement.playerAddGroup(player, Settings.getUnloggedinGroup);
|
||||
|
||||
case NOTLOGGEDIN:
|
||||
// Remove the other group type groups, set the current group
|
||||
permsMan.removeGroups(player, Arrays.asList(Settings.unRegisteredGroup, Settings.getRegisteredGroup));
|
||||
permsMan.addGroup(player, Settings.getUnloggedinGroup);
|
||||
break;
|
||||
}
|
||||
case LOGGEDIN: {
|
||||
if (!useGroupSystem())
|
||||
break;
|
||||
|
||||
case LOGGEDIN:
|
||||
// Get the limbo player data
|
||||
LimboPlayer limbo = LimboCache.getInstance().getLimboPlayer(player.getName().toLowerCase());
|
||||
if (limbo == null)
|
||||
if(limbo == null)
|
||||
break;
|
||||
|
||||
// Get the players group
|
||||
String realGroup = limbo.getGroup();
|
||||
plugin.vaultGroupManagement.playerRemoveGroup(player, currentGroup);
|
||||
plugin.vaultGroupManagement.playerAddGroup(player, realGroup);
|
||||
|
||||
// Remove the other group types groups, set the real group
|
||||
permsMan.removeGroups(player, Arrays.asList(Settings.unRegisteredGroup, Settings.getRegisteredGroup, Settings.getUnloggedinGroup));
|
||||
permsMan.addGroup(player, realGroup);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user