diff --git a/src/com/sk89q/bukkit/migration/ConfigurationPermissionsResolver.java b/src/com/sk89q/bukkit/migration/ConfigurationPermissionsResolver.java index ac8a0ba16..d2c4aa6dc 100644 --- a/src/com/sk89q/bukkit/migration/ConfigurationPermissionsResolver.java +++ b/src/com/sk89q/bukkit/migration/ConfigurationPermissionsResolver.java @@ -29,6 +29,7 @@ import org.bukkit.util.config.Configuration; public class ConfigurationPermissionsResolver implements PermissionsResolver { private Configuration config; private Map> userPermissionsCache; + private Set defaultPermissionsCache; private Map> userGroups; public ConfigurationPermissionsResolver(Configuration config) { @@ -38,6 +39,7 @@ public class ConfigurationPermissionsResolver implements PermissionsResolver { public void load() { userGroups = new HashMap>(); userPermissionsCache = new HashMap>(); + defaultPermissionsCache = new HashSet(); Map> userGroupPermissions = new HashMap>(); @@ -51,6 +53,10 @@ public class ConfigurationPermissionsResolver implements PermissionsResolver { if (permissions.size() > 0) { Set groupPerms = new HashSet(permissions); userGroupPermissions.put(key, groupPerms); + + if (key.equals("default")) { + defaultPermissionsCache.addAll(permissions); + } } } } @@ -90,7 +96,8 @@ public class ConfigurationPermissionsResolver implements PermissionsResolver { public boolean hasPermission(String player, String permission) { Set perms = userPermissionsCache.get(player.toLowerCase()); if (perms == null) { - return false; + return defaultPermissionsCache.contains(permission) + || defaultPermissionsCache.contains("*"); } return perms.contains("*") || perms.contains(permission); diff --git a/src/com/sk89q/bukkit/migration/FlatFilePermissionsResolver.java b/src/com/sk89q/bukkit/migration/FlatFilePermissionsResolver.java index b57440ff7..e75069c2f 100644 --- a/src/com/sk89q/bukkit/migration/FlatFilePermissionsResolver.java +++ b/src/com/sk89q/bukkit/migration/FlatFilePermissionsResolver.java @@ -31,6 +31,7 @@ import java.util.HashMap; public class FlatFilePermissionsResolver implements PermissionsResolver { private Map> userPermissionsCache; + private Set defaultPermissionsCache; private Map> userGroups; public FlatFilePermissionsResolver() { @@ -90,8 +91,13 @@ public class FlatFilePermissionsResolver implements PermissionsResolver { public void load() { userGroups = new HashMap>(); userPermissionsCache = new HashMap>(); + defaultPermissionsCache = new HashSet(); Map> userGroupPermissions = loadGroupPermissions(); + + if (userGroupPermissions.containsKey("default")) { + defaultPermissionsCache = userGroupPermissions.get("default"); + } File file = new File("perms_users.txt"); FileReader input = null; @@ -149,7 +155,8 @@ public class FlatFilePermissionsResolver implements PermissionsResolver { public boolean hasPermission(String player, String permission) { Set perms = userPermissionsCache.get(player.toLowerCase()); if (perms == null) { - return false; + return defaultPermissionsCache.contains(permission) + || defaultPermissionsCache.contains("*"); } return perms.contains("*") || perms.contains(permission);