Cleanup permission calculation
This commit is contained in:
@@ -41,12 +41,12 @@ public class DefaultsProcessor implements PermissionProcessor {
|
||||
public me.lucko.luckperms.api.Tristate hasPermission(String permission) {
|
||||
Tristate t = service.getUserSubjects().getDefaults().getPermissionValue(contexts, permission);
|
||||
if (t != Tristate.UNDEFINED) {
|
||||
return convertTristate(Tristate.fromBoolean(t.asBoolean()));
|
||||
return convertTristate(t);
|
||||
}
|
||||
|
||||
Tristate t2 = service.getDefaults().getPermissionValue(contexts, permission);
|
||||
if (t2 != Tristate.UNDEFINED) {
|
||||
return convertTristate(Tristate.fromBoolean(t.asBoolean()));
|
||||
return convertTristate(t);
|
||||
}
|
||||
|
||||
return me.lucko.luckperms.api.Tristate.UNDEFINED;
|
||||
|
||||
+8
-29
@@ -24,6 +24,7 @@ package me.lucko.luckperms.sponge.calculators;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.common.calculators.PermissionProcessor;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -35,46 +36,24 @@ public class SpongeWildcardProcessor implements PermissionProcessor {
|
||||
private final Map<String, Boolean> map;
|
||||
|
||||
@Override
|
||||
public me.lucko.luckperms.api.Tristate hasPermission(String permission) {
|
||||
public Tristate hasPermission(String permission) {
|
||||
String node = permission;
|
||||
|
||||
while (node.contains(".")) {
|
||||
while (true) {
|
||||
int endIndex = node.lastIndexOf('.');
|
||||
if (endIndex == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
node = node.substring(0, endIndex);
|
||||
if (!isEmpty(node)) {
|
||||
if (map.containsKey(node)) {
|
||||
return me.lucko.luckperms.api.Tristate.fromBoolean(map.get(node));
|
||||
if (!node.isEmpty()) {
|
||||
Boolean b = map.get(node);
|
||||
if (b != null) {
|
||||
return Tristate.fromBoolean(b);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (map.containsKey("'*'")) {
|
||||
return me.lucko.luckperms.api.Tristate.fromBoolean(map.get("'*'"));
|
||||
}
|
||||
|
||||
if (map.containsKey("*")) {
|
||||
return me.lucko.luckperms.api.Tristate.fromBoolean(map.get("*"));
|
||||
}
|
||||
|
||||
return me.lucko.luckperms.api.Tristate.UNDEFINED;
|
||||
}
|
||||
|
||||
private static boolean isEmpty(String s) {
|
||||
if (s.equals("")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
char[] chars = s.toCharArray();
|
||||
for (char c : chars) {
|
||||
if (c != '.') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return Tristate.UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,12 +24,12 @@ package me.lucko.luckperms.sponge.contexts;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import me.lucko.luckperms.api.context.ContextCalculator;
|
||||
import me.lucko.luckperms.sponge.service.LuckPermsService;
|
||||
import org.spongepowered.api.service.context.Context;
|
||||
import org.spongepowered.api.service.permission.Subject;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class SpongeCalculatorLink extends ContextCalculator<Subject> {
|
||||
@@ -37,10 +37,11 @@ public class SpongeCalculatorLink extends ContextCalculator<Subject> {
|
||||
|
||||
@Override
|
||||
public Map<String, String> giveApplicableContext(Subject subject, Map<String, String> accumulator) {
|
||||
Set<Context> contexts = accumulator.entrySet().stream().map(e -> new Context(e.getKey(), e.getValue())).collect(Collectors.toSet());
|
||||
Set<Context> contexts = LuckPermsService.convertContexts(accumulator);
|
||||
calculator.accumulateContexts(subject, contexts);
|
||||
|
||||
contexts.forEach(c -> accumulator.put(c.getKey(), c.getValue()));
|
||||
accumulator.clear();
|
||||
accumulator.putAll(LuckPermsService.convertContexts(contexts));
|
||||
return accumulator;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user