Return more detailed information about exactly how a permission check result was determined
This commit is contained in:
@@ -28,6 +28,7 @@ package me.lucko.luckperms.nukkit.calculator;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
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 me.lucko.luckperms.nukkit.LPNukkitPlugin;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -38,6 +39,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
* Permission Processor for Nukkits "child" permission system.
|
||||
*/
|
||||
public class ChildProcessor extends AbstractPermissionProcessor implements PermissionProcessor {
|
||||
private static final TristateResult.Factory RESULT_FACTORY = new TristateResult.Factory(ChildProcessor.class);
|
||||
|
||||
private final LPNukkitPlugin 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
|
||||
|
||||
@@ -27,6 +27,7 @@ package me.lucko.luckperms.nukkit.calculator;
|
||||
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.common.calculator.processor.PermissionProcessor;
|
||||
import me.lucko.luckperms.common.calculator.result.TristateResult;
|
||||
import me.lucko.luckperms.nukkit.LPNukkitPlugin;
|
||||
import me.lucko.luckperms.nukkit.inject.PermissionDefault;
|
||||
|
||||
@@ -34,6 +35,8 @@ import me.lucko.luckperms.nukkit.inject.PermissionDefault;
|
||||
* Permission Processor for Nukkits "default" permission system.
|
||||
*/
|
||||
public class DefaultsProcessor implements PermissionProcessor {
|
||||
private static final TristateResult.Factory RESULT_FACTORY = new TristateResult.Factory(DefaultsProcessor.class);
|
||||
|
||||
private final LPNukkitPlugin plugin;
|
||||
private final boolean isOp;
|
||||
|
||||
@@ -43,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");
|
||||
}
|
||||
|
||||
PermissionDefault def = PermissionDefault.fromPermission(this.plugin.getPermissionMap().get(permission));
|
||||
return def == null ? Tristate.UNDEFINED : Tristate.fromBoolean(def.getValue(this.isOp));
|
||||
if (def == null) {
|
||||
return TristateResult.UNDEFINED;
|
||||
}
|
||||
return RESULT_FACTORY.result(Tristate.fromBoolean(def.getValue(this.isOp)), "permission map");
|
||||
}
|
||||
}
|
||||
|
||||
+10
-13
@@ -25,8 +25,13 @@
|
||||
|
||||
package me.lucko.luckperms.nukkit.inject.permissible;
|
||||
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.permission.PermissibleBase;
|
||||
import cn.nukkit.permission.Permission;
|
||||
import cn.nukkit.permission.PermissionAttachment;
|
||||
import cn.nukkit.permission.PermissionAttachmentInfo;
|
||||
import cn.nukkit.plugin.Plugin;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.context.ContextsSupplier;
|
||||
@@ -35,16 +40,8 @@ import me.lucko.luckperms.common.util.ImmutableCollectors;
|
||||
import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent;
|
||||
import me.lucko.luckperms.nukkit.LPNukkitPlugin;
|
||||
import me.lucko.luckperms.nukkit.inject.PermissionDefault;
|
||||
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.permission.PermissibleBase;
|
||||
import cn.nukkit.permission.Permission;
|
||||
import cn.nukkit.permission.PermissionAttachment;
|
||||
import cn.nukkit.permission.PermissionAttachmentInfo;
|
||||
import cn.nukkit.plugin.Plugin;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
@@ -137,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 || PermissionDefault.OP.getValue(isOp());
|
||||
}
|
||||
|
||||
@@ -147,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;
|
||||
}
|
||||
@@ -166,7 +163,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() : PermissionDefault.OP.getValue(isOp());
|
||||
}
|
||||
|
||||
@@ -176,7 +173,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();
|
||||
}
|
||||
|
||||
+8
-8
@@ -25,18 +25,18 @@
|
||||
|
||||
package me.lucko.luckperms.nukkit.inject.permissible;
|
||||
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
import me.lucko.luckperms.common.verbose.VerboseHandler;
|
||||
import me.lucko.luckperms.common.verbose.event.PermissionCheckEvent;
|
||||
import me.lucko.luckperms.nukkit.inject.dummy.DummyPermissibleBase;
|
||||
|
||||
import cn.nukkit.permission.PermissibleBase;
|
||||
import cn.nukkit.permission.Permission;
|
||||
import cn.nukkit.permission.PermissionAttachment;
|
||||
import cn.nukkit.permission.PermissionAttachmentInfo;
|
||||
import cn.nukkit.plugin.Plugin;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
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 me.lucko.luckperms.nukkit.inject.dummy.DummyPermissibleBase;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user