Return more detailed information about exactly how a permission check result was determined
This commit is contained in:
@@ -28,10 +28,13 @@ package me.lucko.luckperms.sponge.calculator;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ImmutableContextSet;
|
||||
import me.lucko.luckperms.common.calculator.processor.PermissionProcessor;
|
||||
import me.lucko.luckperms.common.calculator.result.TristateResult;
|
||||
import me.lucko.luckperms.sponge.service.model.LPPermissionService;
|
||||
import me.lucko.luckperms.sponge.service.model.LPSubject;
|
||||
|
||||
public abstract class DefaultsProcessor implements PermissionProcessor {
|
||||
private static final TristateResult.Factory RESULT_FACTORY = new TristateResult.Factory(DefaultsProcessor.class);
|
||||
|
||||
protected final LPPermissionService service;
|
||||
private final ImmutableContextSet contexts;
|
||||
|
||||
@@ -43,17 +46,17 @@ public abstract class DefaultsProcessor implements PermissionProcessor {
|
||||
protected abstract LPSubject getTypeDefaults();
|
||||
|
||||
@Override
|
||||
public Tristate hasPermission(String permission) {
|
||||
public TristateResult hasPermission(String permission) {
|
||||
Tristate t = getTypeDefaults().getPermissionValue(this.contexts, permission);
|
||||
if (t != Tristate.UNDEFINED) {
|
||||
return t;
|
||||
return RESULT_FACTORY.result(t, "type defaults");
|
||||
}
|
||||
|
||||
t = this.service.getRootDefaults().getPermissionValue(this.contexts, permission);
|
||||
if (t != Tristate.UNDEFINED) {
|
||||
return t;
|
||||
return RESULT_FACTORY.result(t, "root defaults");
|
||||
}
|
||||
|
||||
return Tristate.UNDEFINED;
|
||||
return TristateResult.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-3
@@ -28,12 +28,14 @@ package me.lucko.luckperms.sponge.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.common.node.model.ImmutableNode;
|
||||
|
||||
public class SpongeWildcardProcessor extends AbstractPermissionProcessor implements PermissionProcessor {
|
||||
private static final TristateResult.Factory RESULT_FACTORY = new TristateResult.Factory(SpongeWildcardProcessor.class);
|
||||
|
||||
@Override
|
||||
public Tristate hasPermission(String permission) {
|
||||
public TristateResult hasPermission(String permission) {
|
||||
String node = permission;
|
||||
|
||||
while (true) {
|
||||
@@ -46,12 +48,12 @@ public class SpongeWildcardProcessor extends AbstractPermissionProcessor impleme
|
||||
if (!node.isEmpty()) {
|
||||
Tristate t = Tristate.fromNullableBoolean(this.sourceMap.get(node));
|
||||
if (t != Tristate.UNDEFINED) {
|
||||
return t;
|
||||
return RESULT_FACTORY.result(t, "match: " + node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Tristate.UNDEFINED;
|
||||
return TristateResult.UNDEFINED;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-2
@@ -26,7 +26,6 @@
|
||||
package me.lucko.luckperms.sponge.service.model.calculated;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import me.lucko.luckperms.api.Contexts;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
@@ -295,7 +294,7 @@ public abstract class CalculatedSubject implements LPSubject {
|
||||
@Override
|
||||
public Tristate getPermissionValue(ImmutableContextSet contexts, String permission) {
|
||||
Contexts lookupContexts = Contexts.of(contexts, Contexts.global().getSettings());
|
||||
return this.cachedData.getPermissionData(lookupContexts).getPermissionValue(permission, PermissionCheckEvent.Origin.INTERNAL);
|
||||
return this.cachedData.getPermissionData(lookupContexts).getPermissionValue(permission, PermissionCheckEvent.Origin.INTERNAL).result();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-3
@@ -26,7 +26,6 @@
|
||||
package me.lucko.luckperms.sponge.service.model.permissionholder;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import me.lucko.luckperms.api.Contexts;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ImmutableContextSet;
|
||||
@@ -46,7 +45,6 @@ import me.lucko.luckperms.sponge.service.LuckPermsService;
|
||||
import me.lucko.luckperms.sponge.service.ProxyFactory;
|
||||
import me.lucko.luckperms.sponge.service.model.LPSubject;
|
||||
import me.lucko.luckperms.sponge.service.model.LPSubjectReference;
|
||||
|
||||
import org.spongepowered.api.service.permission.PermissionService;
|
||||
import org.spongepowered.api.service.permission.Subject;
|
||||
|
||||
@@ -111,7 +109,7 @@ public abstract class PermissionHolderSubject<T extends PermissionHolder> implem
|
||||
@Override
|
||||
public Tristate getPermissionValue(ImmutableContextSet contexts, String permission) {
|
||||
Contexts lookupContexts = this.plugin.getContextManager().formContexts(contexts);
|
||||
return this.parent.getCachedData().getPermissionData(lookupContexts).getPermissionValue(permission, PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK);
|
||||
return this.parent.getCachedData().getPermissionData(lookupContexts).getPermissionValue(permission, PermissionCheckEvent.Origin.PLATFORM_LOOKUP_CHECK).result();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user