Return more detailed information about exactly how a permission check result was determined
This commit is contained in:
@@ -29,6 +29,7 @@ import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.bukkit.LPBukkitPlugin;
|
||||
import me.lucko.luckperms.common.calculator.processor.AbstractPermissionProcessor;
|
||||
import me.lucko.luckperms.common.calculator.processor.PermissionProcessor;
|
||||
import me.lucko.luckperms.common.calculator.result.TristateResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
@@ -38,6 +39,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
* Permission Processor for Bukkits "child" permission system.
|
||||
*/
|
||||
public class ChildProcessor extends AbstractPermissionProcessor implements PermissionProcessor {
|
||||
private static final TristateResult.Factory RESULT_FACTORY = new TristateResult.Factory(ChildProcessor.class);
|
||||
|
||||
private final LPBukkitPlugin plugin;
|
||||
private Map<String, Boolean> childPermissions = Collections.emptyMap();
|
||||
|
||||
@@ -46,8 +49,8 @@ public class ChildProcessor extends AbstractPermissionProcessor implements Permi
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tristate hasPermission(String permission) {
|
||||
return Tristate.fromNullableBoolean(this.childPermissions.get(permission));
|
||||
public TristateResult hasPermission(String permission) {
|
||||
return RESULT_FACTORY.result(Tristate.fromNullableBoolean(this.childPermissions.get(permission)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -28,13 +28,15 @@ package me.lucko.luckperms.bukkit.calculator;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.bukkit.LPBukkitPlugin;
|
||||
import me.lucko.luckperms.common.calculator.processor.PermissionProcessor;
|
||||
|
||||
import me.lucko.luckperms.common.calculator.result.TristateResult;
|
||||
import org.bukkit.permissions.Permission;
|
||||
|
||||
/**
|
||||
* Permission Processor for Bukkits "default" permission system.
|
||||
*/
|
||||
public class DefaultsProcessor implements PermissionProcessor {
|
||||
private static final TristateResult.Factory RESULT_FACTORY = new TristateResult.Factory(DefaultsProcessor.class);
|
||||
|
||||
private final LPBukkitPlugin plugin;
|
||||
private final boolean isOp;
|
||||
|
||||
@@ -44,13 +46,16 @@ public class DefaultsProcessor implements PermissionProcessor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tristate hasPermission(String permission) {
|
||||
public TristateResult hasPermission(String permission) {
|
||||
Tristate t = this.plugin.getDefaultPermissionMap().lookupDefaultPermission(permission, this.isOp);
|
||||
if (t != Tristate.UNDEFINED) {
|
||||
return t;
|
||||
return RESULT_FACTORY.result(t, "default permission map");
|
||||
}
|
||||
|
||||
Permission defPerm = this.plugin.getPermissionMap().get(permission);
|
||||
return defPerm == null ? Tristate.UNDEFINED : Tristate.fromBoolean(defPerm.getDefault().getValue(this.isOp));
|
||||
if (defPerm == null) {
|
||||
return TristateResult.UNDEFINED;
|
||||
}
|
||||
return RESULT_FACTORY.result(Tristate.fromBoolean(defPerm.getDefault().getValue(this.isOp)), "permission map");
|
||||
}
|
||||
}
|
||||
|
||||
+4
-6
@@ -26,7 +26,6 @@
|
||||
package me.lucko.luckperms.bukkit.inject.permissible;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.bukkit.LPBukkitPlugin;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
@@ -34,7 +33,6 @@ import me.lucko.luckperms.common.context.ContextsSupplier;
|
||||
import me.lucko.luckperms.common.model.User;
|
||||
import me.lucko.luckperms.common.util.ImmutableCollectors;
|
||||
import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.permissions.PermissibleBase;
|
||||
import org.bukkit.permissions.Permission;
|
||||
@@ -136,7 +134,7 @@ public class LPPermissible extends PermissibleBase {
|
||||
throw new NullPointerException("permission");
|
||||
}
|
||||
|
||||
Tristate ts = this.user.getCachedData().getPermissionData(this.contextsSupplier.getContexts()).getPermissionValue(permission, PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK);
|
||||
Tristate ts = this.user.getCachedData().getPermissionData(this.contextsSupplier.getContexts()).getPermissionValue(permission, PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK).result();
|
||||
return ts != Tristate.UNDEFINED || Permission.DEFAULT_PERMISSION.getValue(isOp());
|
||||
}
|
||||
|
||||
@@ -146,7 +144,7 @@ public class LPPermissible extends PermissibleBase {
|
||||
throw new NullPointerException("permission");
|
||||
}
|
||||
|
||||
Tristate ts = this.user.getCachedData().getPermissionData(this.contextsSupplier.getContexts()).getPermissionValue(permission.getName(), PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK);
|
||||
Tristate ts = this.user.getCachedData().getPermissionData(this.contextsSupplier.getContexts()).getPermissionValue(permission.getName(), PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK).result();
|
||||
if (ts != Tristate.UNDEFINED) {
|
||||
return true;
|
||||
}
|
||||
@@ -164,7 +162,7 @@ public class LPPermissible extends PermissibleBase {
|
||||
throw new NullPointerException("permission");
|
||||
}
|
||||
|
||||
Tristate ts = this.user.getCachedData().getPermissionData(this.contextsSupplier.getContexts()).getPermissionValue(permission, PermissionCheckEvent.Origin.PLATFORM_PERMISSION_CHECK);
|
||||
Tristate ts = this.user.getCachedData().getPermissionData(this.contextsSupplier.getContexts()).getPermissionValue(permission, PermissionCheckEvent.Origin.PLATFORM_PERMISSION_CHECK).result();
|
||||
return ts != Tristate.UNDEFINED ? ts.asBoolean() : Permission.DEFAULT_PERMISSION.getValue(isOp());
|
||||
}
|
||||
|
||||
@@ -174,7 +172,7 @@ public class LPPermissible extends PermissibleBase {
|
||||
throw new NullPointerException("permission");
|
||||
}
|
||||
|
||||
Tristate ts = this.user.getCachedData().getPermissionData(this.contextsSupplier.getContexts()).getPermissionValue(permission.getName(), PermissionCheckEvent.Origin.PLATFORM_PERMISSION_CHECK);
|
||||
Tristate ts = this.user.getCachedData().getPermissionData(this.contextsSupplier.getContexts()).getPermissionValue(permission.getName(), PermissionCheckEvent.Origin.PLATFORM_PERMISSION_CHECK).result();
|
||||
if (ts != Tristate.UNDEFINED) {
|
||||
return ts.asBoolean();
|
||||
}
|
||||
|
||||
+2
-2
@@ -28,10 +28,10 @@ package me.lucko.luckperms.bukkit.inject.permissible;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.bukkit.inject.dummy.DummyPermissibleBase;
|
||||
import me.lucko.luckperms.common.calculator.result.TristateResult;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
import me.lucko.luckperms.common.verbose.VerboseHandler;
|
||||
import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent;
|
||||
|
||||
import org.bukkit.permissions.PermissibleBase;
|
||||
import org.bukkit.permissions.Permission;
|
||||
import org.bukkit.permissions.PermissionAttachment;
|
||||
@@ -67,7 +67,7 @@ public class MonitoredPermissibleBase extends PermissibleBase {
|
||||
}
|
||||
|
||||
private void logCheck(PermissionCheckEvent.Origin origin, String permission, boolean result) {
|
||||
this.plugin.getVerboseHandler().offerPermissionCheckEvent(origin, this.name, ContextSet.empty(), permission, Tristate.fromBoolean(result));
|
||||
this.plugin.getVerboseHandler().offerPermissionCheckEvent(origin, this.name, ContextSet.empty(), permission, TristateResult.of(Tristate.fromBoolean(result)));
|
||||
this.plugin.getPermissionRegistry().offer(permission);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
package me.lucko.luckperms.bukkit.vault;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import me.lucko.luckperms.api.Contexts;
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
@@ -43,9 +42,7 @@ import me.lucko.luckperms.common.node.factory.NodeFactory;
|
||||
import me.lucko.luckperms.common.util.Uuids;
|
||||
import me.lucko.luckperms.common.verbose.event.MetaCheckEvent;
|
||||
import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent;
|
||||
|
||||
import net.milkbowl.vault.permission.Permission;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@@ -170,7 +167,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
||||
Contexts contexts = contextForLookup(user, world);
|
||||
PermissionCache permissionData = user.getCachedData().getPermissionData(contexts);
|
||||
|
||||
Tristate result = permissionData.getPermissionValue(permission, PermissionCheckEvent.Origin.THIRD_PARTY_API);
|
||||
Tristate result = permissionData.getPermissionValue(permission, PermissionCheckEvent.Origin.THIRD_PARTY_API).result();
|
||||
if (log()) {
|
||||
logMsg("#userHasPermission: %s - %s - %s - %s", user.getPlainDisplayName(), contexts.getContexts().toMultimap(), permission, result);
|
||||
}
|
||||
@@ -275,7 +272,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
||||
Contexts contexts = contextForLookup(null, world);
|
||||
PermissionCache permissionData = group.getCachedData().getPermissionData(contexts);
|
||||
|
||||
Tristate result = permissionData.getPermissionValue(permission, PermissionCheckEvent.Origin.THIRD_PARTY_API);
|
||||
Tristate result = permissionData.getPermissionValue(permission, PermissionCheckEvent.Origin.THIRD_PARTY_API).result();
|
||||
if (log()) {
|
||||
logMsg("#groupHasPermission: %s - %s - %s - %s", group.getName(), contexts.getContexts().toMultimap(), permission, result);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user