diff --git a/src/main/java/net/frozenorb/apiv3/model/User.java b/src/main/java/net/frozenorb/apiv3/model/User.java index 08f84c1..70414d2 100644 --- a/src/main/java/net/frozenorb/apiv3/model/User.java +++ b/src/main/java/net/frozenorb/apiv3/model/User.java @@ -574,12 +574,27 @@ public final class User { if (error != null) { callback.onResult(null, error); } else { - boolean hasPermission = permissions.containsKey(permission) && permissions.get(permission); + boolean hasPermission = hasPermission(permission, permissions); callback.onResult(hasPermission, null); } }); } + private boolean hasPermission(String permission, Map permissions) { + if (permissions.containsKey(permission) && permissions.get(permission)) { + return true; + } + + int lastDot = permission.lastIndexOf("."); + + if (lastDot == -1) { + return false; + } + + String modifiedPermission = permission.substring(0, lastDot) + ".*"; + return permissions.containsKey(modifiedPermission) && permissions.get(modifiedPermission); + } + public void getCompoundedPermissions(SingleResultCallback> callback) { Grant.findByUser(this, (grants, error) -> { if (error != null) {