mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2024-11-24 11:38:40 +01:00
Don't prevent modification of group.<group name>
nodes with permission subcommands
This commit is contained in:
parent
d393a4c9ca
commit
76bfde4d77
@ -271,11 +271,6 @@ public class CommandManager {
|
|||||||
return CommandResult.INVALID_ARGS;
|
return CommandResult.INVALID_ARGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof ArgumentUtils.UseInheritException) {
|
|
||||||
Message.USE_INHERIT_COMMAND.send(sender);
|
|
||||||
return CommandResult.INVALID_ARGS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof ArgumentUtils.InvalidServerWorldException) {
|
if (e instanceof ArgumentUtils.InvalidServerWorldException) {
|
||||||
Message.SERVER_WORLD_INVALID_ENTRY.send(sender);
|
Message.SERVER_WORLD_INVALID_ENTRY.send(sender);
|
||||||
return CommandResult.INVALID_ARGS;
|
return CommandResult.INVALID_ARGS;
|
||||||
|
@ -168,11 +168,6 @@ public class SharedMainCommand<T extends PermissionHolder> extends SubCommand<T>
|
|||||||
return CommandResult.INVALID_ARGS;
|
return CommandResult.INVALID_ARGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e instanceof ArgumentUtils.UseInheritException) {
|
|
||||||
Message.USE_INHERIT_COMMAND.send(sender);
|
|
||||||
return CommandResult.INVALID_ARGS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e instanceof ArgumentUtils.InvalidServerWorldException) {
|
if (e instanceof ArgumentUtils.InvalidServerWorldException) {
|
||||||
Message.SERVER_WORLD_INVALID_ENTRY.send(sender);
|
Message.SERVER_WORLD_INVALID_ENTRY.send(sender);
|
||||||
return CommandResult.INVALID_ARGS;
|
return CommandResult.INVALID_ARGS;
|
||||||
|
@ -61,8 +61,8 @@ public class PermissionSet extends SharedSubCommand {
|
|||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String node = ArgumentUtils.handleString(0, args);
|
||||||
boolean b = ArgumentUtils.handleBoolean(1, args);
|
boolean b = ArgumentUtils.handleBoolean(1, args);
|
||||||
String node = b ? ArgumentUtils.handleNode(0, args) : ArgumentUtils.handleString(0, args);
|
|
||||||
MutableContextSet context = ArgumentUtils.handleContext(2, args, plugin);
|
MutableContextSet context = ArgumentUtils.handleContext(2, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
||||||
|
@ -66,8 +66,8 @@ public class PermissionSetTemp extends SharedSubCommand {
|
|||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String node = ArgumentUtils.handleString(0, args);
|
||||||
boolean b = ArgumentUtils.handleBoolean(1, args);
|
boolean b = ArgumentUtils.handleBoolean(1, args);
|
||||||
String node = b ? ArgumentUtils.handleNode(0, args) : ArgumentUtils.handleString(0, args);
|
|
||||||
long duration = ArgumentUtils.handleDuration(2, args);
|
long duration = ArgumentUtils.handleDuration(2, args);
|
||||||
MutableContextSet context = ArgumentUtils.handleContext(3, args, plugin);
|
MutableContextSet context = ArgumentUtils.handleContext(3, args, plugin);
|
||||||
|
|
||||||
|
@ -73,14 +73,7 @@ public class PermissionUnset extends SharedSubCommand {
|
|||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
DataMutateResult result;
|
DataMutateResult result = holder.unsetPermission(NodeFactory.newBuilder(node).withExtraContext(context).build());
|
||||||
if (node.startsWith("group.")) {
|
|
||||||
// unset exact - with false value only
|
|
||||||
result = holder.unsetPermissionExact(NodeFactory.newBuilder(node).setValue(false).withExtraContext(context).build());
|
|
||||||
} else {
|
|
||||||
// standard unset
|
|
||||||
result = holder.unsetPermission(NodeFactory.newBuilder(node).withExtraContext(context).build());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result.asBoolean()) {
|
if (result.asBoolean()) {
|
||||||
Message.UNSETPERMISSION_SUCCESS.send(sender, node, holder.getFriendlyName(), Util.contextSetToString(context));
|
Message.UNSETPERMISSION_SUCCESS.send(sender, node, holder.getFriendlyName(), Util.contextSetToString(context));
|
||||||
|
@ -37,13 +37,11 @@ import me.lucko.luckperms.common.utils.DateUtil;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility class to help process arguments, and throw checked exceptions if the arguments are invalid.
|
* Utility class to help process arguments, and throw checked exceptions if the arguments are invalid.
|
||||||
*/
|
*/
|
||||||
public class ArgumentUtils {
|
public class ArgumentUtils {
|
||||||
public static final Function<String, String> WRAPPER = s -> s.contains(" ") ? "\"" + s + "\"" : s;
|
|
||||||
|
|
||||||
public static String handleString(int index, List<String> args) {
|
public static String handleString(int index, List<String> args) {
|
||||||
return args.get(index).replace("{SPACE}", " ");
|
return args.get(index).replace("{SPACE}", " ");
|
||||||
@ -69,16 +67,6 @@ public class ArgumentUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String handleNode(int index, List<String> args) throws ArgumentException {
|
|
||||||
String node = args.get(index).replace("{SPACE}", " ");
|
|
||||||
if (node.toLowerCase().startsWith("group.")) {
|
|
||||||
throw new UseInheritException();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String handleName(int index, List<String> args) throws ArgumentException {
|
public static String handleName(int index, List<String> args) throws ArgumentException {
|
||||||
String groupName = args.get(index).toLowerCase();
|
String groupName = args.get(index).toLowerCase();
|
||||||
if (!DataConstraints.GROUP_NAME_TEST.test(groupName)) {
|
if (!DataConstraints.GROUP_NAME_TEST.test(groupName)) {
|
||||||
@ -245,20 +233,10 @@ public class ArgumentUtils {
|
|||||||
return contextSet.makeImmutable();
|
return contextSet.makeImmutable();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static abstract class ArgumentException extends CommandException {
|
public static abstract class ArgumentException extends CommandException {}
|
||||||
}
|
public static class DetailedUsageException extends ArgumentException {}
|
||||||
|
public static class InvalidServerWorldException extends ArgumentException {}
|
||||||
public static class DetailedUsageException extends ArgumentException {
|
public static class PastDateException extends ArgumentException {}
|
||||||
}
|
|
||||||
|
|
||||||
public static class UseInheritException extends ArgumentException {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class InvalidServerWorldException extends ArgumentException {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class PastDateException extends ArgumentException {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
@ -91,7 +91,6 @@ public enum Message {
|
|||||||
GROUP_INVALID_ENTRY("&4{}&c is not a valid group name.", true),
|
GROUP_INVALID_ENTRY("&4{}&c is not a valid group name.", true),
|
||||||
TRACK_INVALID_ENTRY("&4{}&c is not a valid track name.", true),
|
TRACK_INVALID_ENTRY("&4{}&c is not a valid track name.", true),
|
||||||
SERVER_WORLD_INVALID_ENTRY("&cServer/world names can only contain alphanumeric characters and cannot exceed 36 characters in length.", true),
|
SERVER_WORLD_INVALID_ENTRY("&cServer/world names can only contain alphanumeric characters and cannot exceed 36 characters in length.", true),
|
||||||
USE_INHERIT_COMMAND("&cUse the 'parent add' and 'parent remove' commands instead of specifying the node.", true),
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user