mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2025-02-11 18:11:42 +01:00
Add 'require-sender-group-membership-to-modify' config option (#1140)
This commit is contained in:
parent
ffdeadac8a
commit
b7f8ca6658
@ -281,6 +281,11 @@ primary-group-calculation: parents-by-weight
|
|||||||
# the arguments given within the command.
|
# the arguments given within the command.
|
||||||
argument-based-command-permissions: false
|
argument-based-command-permissions: false
|
||||||
|
|
||||||
|
# If the plugin should check whether senders are a member of a given group before they're able to
|
||||||
|
# edit the groups data or add/remove other users to/from it.
|
||||||
|
# Note: these limitations do not apply to the web editor!
|
||||||
|
require-sender-group-membership-to-modify: false
|
||||||
|
|
||||||
# If the plugin should send log notifications to users whenever permissions are modified.
|
# If the plugin should send log notifications to users whenever permissions are modified.
|
||||||
#
|
#
|
||||||
# - Notifications are only sent to those with the appropriate permission to receive them
|
# - Notifications are only sent to those with the appropriate permission to receive them
|
||||||
|
@ -289,6 +289,11 @@ primary-group-calculation: parents-by-weight
|
|||||||
# the arguments given within the command.
|
# the arguments given within the command.
|
||||||
argument-based-command-permissions: false
|
argument-based-command-permissions: false
|
||||||
|
|
||||||
|
# If the plugin should check whether senders are a member of a given group before they're able to
|
||||||
|
# edit the groups data or add/remove other users to/from it.
|
||||||
|
# Note: these limitations do not apply to the web editor!
|
||||||
|
require-sender-group-membership-to-modify: false
|
||||||
|
|
||||||
# If the plugin should send log notifications to users whenever permissions are modified.
|
# If the plugin should send log notifications to users whenever permissions are modified.
|
||||||
#
|
#
|
||||||
# - Notifications are only sent to those with the appropriate permission to receive them
|
# - Notifications are only sent to those with the appropriate permission to receive them
|
||||||
|
@ -25,14 +25,19 @@
|
|||||||
|
|
||||||
package me.lucko.luckperms.common.command.access;
|
package me.lucko.luckperms.common.command.access;
|
||||||
|
|
||||||
|
import me.lucko.luckperms.api.Contexts;
|
||||||
import me.lucko.luckperms.api.Tristate;
|
import me.lucko.luckperms.api.Tristate;
|
||||||
import me.lucko.luckperms.api.context.ContextSet;
|
import me.lucko.luckperms.api.context.ContextSet;
|
||||||
|
import me.lucko.luckperms.common.caching.type.PermissionCache;
|
||||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||||
import me.lucko.luckperms.common.model.Group;
|
import me.lucko.luckperms.common.model.Group;
|
||||||
|
import me.lucko.luckperms.common.model.PermissionHolder;
|
||||||
import me.lucko.luckperms.common.model.Track;
|
import me.lucko.luckperms.common.model.Track;
|
||||||
import me.lucko.luckperms.common.model.User;
|
import me.lucko.luckperms.common.model.User;
|
||||||
|
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
||||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||||
import me.lucko.luckperms.common.sender.Sender;
|
import me.lucko.luckperms.common.sender.Sender;
|
||||||
|
import me.lucko.luckperms.common.verbose.CheckOrigin;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
@ -254,6 +259,49 @@ public final class ArgumentPermissions {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the sender has permission to act using a given group, if holder is a group.
|
||||||
|
*
|
||||||
|
* @param plugin the plugin instance
|
||||||
|
* @param sender the sender to check
|
||||||
|
* @param holder the target group (doesn't have to be a group instance - this method checks that)
|
||||||
|
* @param contextSet the contexts the sender is trying to act within
|
||||||
|
* @return true if the sender should NOT be allowed to act, true if they should
|
||||||
|
*/
|
||||||
|
public static boolean checkGroup(LuckPermsPlugin plugin, Sender sender, PermissionHolder holder, ContextSet contextSet) {
|
||||||
|
if (holder.getType().isGroup()) {
|
||||||
|
return checkGroup(plugin, sender, ((Group) holder).getName(), contextSet);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the sender has permission to act using a given group
|
||||||
|
*
|
||||||
|
* @param plugin the plugin instance
|
||||||
|
* @param sender the sender to check
|
||||||
|
* @param targetGroupName the target group
|
||||||
|
* @param contextSet the contexts the sender is trying to act within
|
||||||
|
* @return true if the sender should NOT be allowed to act, true if they should
|
||||||
|
*/
|
||||||
|
public static boolean checkGroup(LuckPermsPlugin plugin, Sender sender, String targetGroupName, ContextSet contextSet) {
|
||||||
|
if (!plugin.getConfiguration().get(ConfigKeys.REQUIRE_SENDER_GROUP_MEMBERSHIP_TO_MODIFY)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sender.isConsole()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
User user = plugin.getUserManager().getIfLoaded(sender.getUuid());
|
||||||
|
if (user == null) {
|
||||||
|
throw new IllegalStateException("Unable to get a User for " + sender.getUuid() + " - " + sender.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
PermissionCache permissionData = user.getCachedData().getPermissionData(Contexts.of(contextSet, Contexts.global().getSettings()));
|
||||||
|
return !permissionData.getPermissionValue(NodeFactory.groupNode(targetGroupName), CheckOrigin.INTERNAL).asBoolean();
|
||||||
|
}
|
||||||
|
|
||||||
private ArgumentPermissions() {}
|
private ArgumentPermissions() {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,8 @@ public class MetaAddChatMeta extends SharedSubCommand {
|
|||||||
String meta = ArgumentParser.parseString(1, args);
|
String meta = ArgumentParser.parseString(1, args);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,8 @@ public class MetaAddTempChatMeta extends SharedSubCommand {
|
|||||||
TemporaryMergeBehaviour modifier = ArgumentParser.parseTemporaryModifier(3, args).orElseGet(() -> plugin.getConfiguration().get(ConfigKeys.TEMPORARY_ADD_BEHAVIOUR));
|
TemporaryMergeBehaviour modifier = ArgumentParser.parseTemporaryModifier(3, args).orElseGet(() -> plugin.getConfiguration().get(ConfigKeys.TEMPORARY_ADD_BEHAVIOUR));
|
||||||
MutableContextSet context = ArgumentParser.parseContext(3, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(3, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,8 @@ public class MetaClear extends SharedSubCommand {
|
|||||||
|
|
||||||
MutableContextSet context = ArgumentParser.parseContext(0, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(0, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,8 @@ public class MetaRemoveChatMeta extends SharedSubCommand {
|
|||||||
String meta = ArgumentParser.parseStringOrElse(1, args, "null");
|
String meta = ArgumentParser.parseStringOrElse(1, args, "null");
|
||||||
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,8 @@ public class MetaRemoveTempChatMeta extends SharedSubCommand {
|
|||||||
String meta = ArgumentParser.parseStringOrElse(1, args, "null");
|
String meta = ArgumentParser.parseStringOrElse(1, args, "null");
|
||||||
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -69,12 +69,9 @@ public class MetaSet extends SharedSubCommand {
|
|||||||
String value = args.get(1);
|
String value = args.get(1);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
|
||||||
}
|
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,8 @@ public class MetaSetChatMeta extends SharedSubCommand {
|
|||||||
context = ArgumentParser.parseContext(2, args, plugin);
|
context = ArgumentParser.parseContext(2, args, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -74,12 +74,9 @@ public class MetaSetTemp extends SharedSubCommand {
|
|||||||
TemporaryMergeBehaviour modifier = ArgumentParser.parseTemporaryModifier(3, args).orElseGet(() -> plugin.getConfiguration().get(ConfigKeys.TEMPORARY_ADD_BEHAVIOUR));
|
TemporaryMergeBehaviour modifier = ArgumentParser.parseTemporaryModifier(3, args).orElseGet(() -> plugin.getConfiguration().get(ConfigKeys.TEMPORARY_ADD_BEHAVIOUR));
|
||||||
MutableContextSet context = ArgumentParser.parseContext(3, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(3, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
|
||||||
}
|
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,8 @@ public class MetaSetTempChatMeta extends SharedSubCommand {
|
|||||||
context = ArgumentParser.parseContext(3, args, plugin);
|
context = ArgumentParser.parseContext(3, args, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -60,12 +60,9 @@ public class MetaUnset extends SharedSubCommand {
|
|||||||
String key = args.get(0);
|
String key = args.get(0);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
|
||||||
}
|
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -60,12 +60,9 @@ public class MetaUnsetTemp extends SharedSubCommand {
|
|||||||
String key = args.get(0);
|
String key = args.get(0);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
|
||||||
}
|
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, key)) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,8 @@ public class HolderClear<T extends PermissionHolder> extends SubCommand<T> {
|
|||||||
|
|
||||||
MutableContextSet context = ArgumentParser.parseContext(0, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(0, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, getPermission().get(), context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, getPermission().get(), context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ package me.lucko.luckperms.common.commands.generic.other;
|
|||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
|
import me.lucko.luckperms.api.context.ContextSet;
|
||||||
import me.lucko.luckperms.common.command.CommandResult;
|
import me.lucko.luckperms.common.command.CommandResult;
|
||||||
import me.lucko.luckperms.common.command.abstraction.SubCommand;
|
import me.lucko.luckperms.common.command.abstraction.SubCommand;
|
||||||
import me.lucko.luckperms.common.command.access.ArgumentPermissions;
|
import me.lucko.luckperms.common.command.access.ArgumentPermissions;
|
||||||
@ -58,7 +59,7 @@ public class HolderEditor<T extends PermissionHolder> extends SubCommand<T> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, T holder, List<String> args, String label) {
|
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, T holder, List<String> args, String label) {
|
||||||
if (ArgumentPermissions.checkViewPerms(plugin, sender, getPermission().get(), holder)) {
|
if (ArgumentPermissions.checkViewPerms(plugin, sender, getPermission().get(), holder) || ArgumentPermissions.checkGroup(plugin, sender, holder, ContextSet.empty())) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -70,12 +70,10 @@ public class ParentAdd extends SharedSubCommand {
|
|||||||
return CommandResult.INVALID_ARGS;
|
return CommandResult.INVALID_ARGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkGroup(plugin, sender, group, context) ||
|
||||||
}
|
ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -75,12 +75,10 @@ public class ParentAddTemp extends SharedSubCommand {
|
|||||||
return CommandResult.INVALID_ARGS;
|
return CommandResult.INVALID_ARGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkGroup(plugin, sender, group, context) ||
|
||||||
}
|
ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ public class ParentClear extends SharedSubCommand {
|
|||||||
|
|
||||||
MutableContextSet context = ArgumentParser.parseContext(0, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(0, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) || ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -82,12 +82,9 @@ public class ParentClearTrack extends SharedSubCommand {
|
|||||||
|
|
||||||
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkArguments(plugin, sender, permission, track.getName())) {
|
||||||
}
|
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, track.getName())) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -66,12 +66,10 @@ public class ParentRemove extends SharedSubCommand {
|
|||||||
String groupName = ArgumentParser.parseNameWithSpace(0, args);
|
String groupName = ArgumentParser.parseNameWithSpace(0, args);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkGroup(plugin, sender, groupName, context) ||
|
||||||
}
|
ArgumentPermissions.checkArguments(plugin, sender, permission, groupName)) {
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, groupName)) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -64,12 +64,10 @@ public class ParentRemoveTemp extends SharedSubCommand {
|
|||||||
String groupName = ArgumentParser.parseNameWithSpace(0, args);
|
String groupName = ArgumentParser.parseNameWithSpace(0, args);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkGroup(plugin, sender, groupName, context) ||
|
||||||
}
|
ArgumentPermissions.checkArguments(plugin, sender, permission, groupName)) {
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, groupName)) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -70,12 +70,10 @@ public class ParentSet extends SharedSubCommand {
|
|||||||
return CommandResult.LOADING_ERROR;
|
return CommandResult.LOADING_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkGroup(plugin, sender, group, context) ||
|
||||||
}
|
ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -103,12 +103,10 @@ public class ParentSetTrack extends SharedSubCommand {
|
|||||||
return CommandResult.LOADING_ERROR;
|
return CommandResult.LOADING_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
return CommandResult.NO_PERMISSION;
|
ArgumentPermissions.checkGroup(plugin, sender, group, context) ||
|
||||||
}
|
ArgumentPermissions.checkArguments(plugin, sender, permission, track.getName(), group.getName())) {
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, track.getName(), group.getName())) {
|
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ package me.lucko.luckperms.common.commands.generic.parent;
|
|||||||
|
|
||||||
import me.lucko.luckperms.api.Node;
|
import me.lucko.luckperms.api.Node;
|
||||||
import me.lucko.luckperms.api.StandardNodeEquality;
|
import me.lucko.luckperms.api.StandardNodeEquality;
|
||||||
|
import me.lucko.luckperms.api.context.ContextSet;
|
||||||
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
||||||
import me.lucko.luckperms.common.command.CommandResult;
|
import me.lucko.luckperms.common.command.CommandResult;
|
||||||
import me.lucko.luckperms.common.command.abstraction.SharedSubCommand;
|
import me.lucko.luckperms.common.command.abstraction.SharedSubCommand;
|
||||||
@ -78,6 +79,14 @@ public class UserSwitchPrimaryGroup extends SharedSubCommand {
|
|||||||
return CommandResult.INVALID_ARGS;
|
return CommandResult.INVALID_ARGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, ContextSet.empty()) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, ContextSet.empty()) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, group, ContextSet.empty()) ||
|
||||||
|
ArgumentPermissions.checkArguments(plugin, sender, permission, group.getName())) {
|
||||||
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
|
return CommandResult.NO_PERMISSION;
|
||||||
|
}
|
||||||
|
|
||||||
if (user.getPrimaryGroup().getStoredValue().orElse(NodeFactory.DEFAULT_GROUP_NAME).equalsIgnoreCase(group.getName())) {
|
if (user.getPrimaryGroup().getStoredValue().orElse(NodeFactory.DEFAULT_GROUP_NAME).equalsIgnoreCase(group.getName())) {
|
||||||
Message.USER_PRIMARYGROUP_ERROR_ALREADYHAS.send(sender, user.getFriendlyName(), group.getFriendlyName());
|
Message.USER_PRIMARYGROUP_ERROR_ALREADYHAS.send(sender, user.getFriendlyName(), group.getFriendlyName());
|
||||||
return CommandResult.STATE_ERROR;
|
return CommandResult.STATE_ERROR;
|
||||||
|
@ -61,7 +61,8 @@ public class PermissionClear extends SharedSubCommand {
|
|||||||
|
|
||||||
MutableContextSet context = ArgumentParser.parseContext(0, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(0, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ package me.lucko.luckperms.common.commands.generic.permission;
|
|||||||
|
|
||||||
import me.lucko.luckperms.api.DataMutateResult;
|
import me.lucko.luckperms.api.DataMutateResult;
|
||||||
import me.lucko.luckperms.api.context.MutableContextSet;
|
import me.lucko.luckperms.api.context.MutableContextSet;
|
||||||
|
import me.lucko.luckperms.api.nodetype.types.InheritanceType;
|
||||||
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
||||||
import me.lucko.luckperms.common.command.CommandResult;
|
import me.lucko.luckperms.common.command.CommandResult;
|
||||||
import me.lucko.luckperms.common.command.abstraction.CommandException;
|
import me.lucko.luckperms.common.command.abstraction.CommandException;
|
||||||
@ -43,6 +44,7 @@ import me.lucko.luckperms.common.locale.command.CommandSpec;
|
|||||||
import me.lucko.luckperms.common.locale.message.Message;
|
import me.lucko.luckperms.common.locale.message.Message;
|
||||||
import me.lucko.luckperms.common.model.PermissionHolder;
|
import me.lucko.luckperms.common.model.PermissionHolder;
|
||||||
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
||||||
|
import me.lucko.luckperms.common.node.model.NodeTypes;
|
||||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||||
import me.lucko.luckperms.common.sender.Sender;
|
import me.lucko.luckperms.common.sender.Sender;
|
||||||
import me.lucko.luckperms.common.utils.Predicates;
|
import me.lucko.luckperms.common.utils.Predicates;
|
||||||
@ -65,14 +67,19 @@ public class PermissionSet extends SharedSubCommand {
|
|||||||
boolean value = ArgumentParser.parseBoolean(1, args);
|
boolean value = ArgumentParser.parseBoolean(1, args);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(2, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
|
ArgumentPermissions.checkArguments(plugin, sender, permission, node)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, node)) {
|
InheritanceType inheritanceType = NodeTypes.parseInheritanceType(node);
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
if (inheritanceType != null) {
|
||||||
return CommandResult.NO_PERMISSION;
|
if (ArgumentPermissions.checkGroup(plugin, sender, inheritanceType.getGroupName(), context)) {
|
||||||
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
|
return CommandResult.NO_PERMISSION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DataMutateResult result = holder.setPermission(NodeFactory.builder(node).setValue(value).withExtraContext(context).build());
|
DataMutateResult result = holder.setPermission(NodeFactory.builder(node).setValue(value).withExtraContext(context).build());
|
||||||
|
@ -28,6 +28,7 @@ package me.lucko.luckperms.common.commands.generic.permission;
|
|||||||
import me.lucko.luckperms.api.TemporaryDataMutateResult;
|
import me.lucko.luckperms.api.TemporaryDataMutateResult;
|
||||||
import me.lucko.luckperms.api.TemporaryMergeBehaviour;
|
import me.lucko.luckperms.api.TemporaryMergeBehaviour;
|
||||||
import me.lucko.luckperms.api.context.MutableContextSet;
|
import me.lucko.luckperms.api.context.MutableContextSet;
|
||||||
|
import me.lucko.luckperms.api.nodetype.types.InheritanceType;
|
||||||
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
||||||
import me.lucko.luckperms.common.command.CommandResult;
|
import me.lucko.luckperms.common.command.CommandResult;
|
||||||
import me.lucko.luckperms.common.command.abstraction.CommandException;
|
import me.lucko.luckperms.common.command.abstraction.CommandException;
|
||||||
@ -45,6 +46,7 @@ import me.lucko.luckperms.common.locale.command.CommandSpec;
|
|||||||
import me.lucko.luckperms.common.locale.message.Message;
|
import me.lucko.luckperms.common.locale.message.Message;
|
||||||
import me.lucko.luckperms.common.model.PermissionHolder;
|
import me.lucko.luckperms.common.model.PermissionHolder;
|
||||||
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
||||||
|
import me.lucko.luckperms.common.node.model.NodeTypes;
|
||||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||||
import me.lucko.luckperms.common.sender.Sender;
|
import me.lucko.luckperms.common.sender.Sender;
|
||||||
import me.lucko.luckperms.common.utils.DurationFormatter;
|
import me.lucko.luckperms.common.utils.DurationFormatter;
|
||||||
@ -70,14 +72,19 @@ public class PermissionSetTemp extends SharedSubCommand {
|
|||||||
TemporaryMergeBehaviour modifier = ArgumentParser.parseTemporaryModifier(3, args).orElseGet(() -> plugin.getConfiguration().get(ConfigKeys.TEMPORARY_ADD_BEHAVIOUR));
|
TemporaryMergeBehaviour modifier = ArgumentParser.parseTemporaryModifier(3, args).orElseGet(() -> plugin.getConfiguration().get(ConfigKeys.TEMPORARY_ADD_BEHAVIOUR));
|
||||||
MutableContextSet context = ArgumentParser.parseContext(3, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(3, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
|
ArgumentPermissions.checkArguments(plugin, sender, permission, node)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, node)) {
|
InheritanceType inheritanceType = NodeTypes.parseInheritanceType(node);
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
if (inheritanceType != null) {
|
||||||
return CommandResult.NO_PERMISSION;
|
if (ArgumentPermissions.checkGroup(plugin, sender, inheritanceType.getGroupName(), context)) {
|
||||||
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
|
return CommandResult.NO_PERMISSION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TemporaryDataMutateResult result = holder.setPermission(NodeFactory.builder(node).setValue(value).withExtraContext(context).setExpiry(duration).build(), modifier);
|
TemporaryDataMutateResult result = holder.setPermission(NodeFactory.builder(node).setValue(value).withExtraContext(context).setExpiry(duration).build(), modifier);
|
||||||
|
@ -27,6 +27,7 @@ package me.lucko.luckperms.common.commands.generic.permission;
|
|||||||
|
|
||||||
import me.lucko.luckperms.api.DataMutateResult;
|
import me.lucko.luckperms.api.DataMutateResult;
|
||||||
import me.lucko.luckperms.api.context.MutableContextSet;
|
import me.lucko.luckperms.api.context.MutableContextSet;
|
||||||
|
import me.lucko.luckperms.api.nodetype.types.InheritanceType;
|
||||||
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
||||||
import me.lucko.luckperms.common.command.CommandResult;
|
import me.lucko.luckperms.common.command.CommandResult;
|
||||||
import me.lucko.luckperms.common.command.abstraction.CommandException;
|
import me.lucko.luckperms.common.command.abstraction.CommandException;
|
||||||
@ -43,6 +44,7 @@ import me.lucko.luckperms.common.locale.command.CommandSpec;
|
|||||||
import me.lucko.luckperms.common.locale.message.Message;
|
import me.lucko.luckperms.common.locale.message.Message;
|
||||||
import me.lucko.luckperms.common.model.PermissionHolder;
|
import me.lucko.luckperms.common.model.PermissionHolder;
|
||||||
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
||||||
|
import me.lucko.luckperms.common.node.model.NodeTypes;
|
||||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||||
import me.lucko.luckperms.common.sender.Sender;
|
import me.lucko.luckperms.common.sender.Sender;
|
||||||
import me.lucko.luckperms.common.utils.Predicates;
|
import me.lucko.luckperms.common.utils.Predicates;
|
||||||
@ -64,14 +66,19 @@ public class PermissionUnset extends SharedSubCommand {
|
|||||||
String node = ArgumentParser.parseString(0, args);
|
String node = ArgumentParser.parseString(0, args);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
|
ArgumentPermissions.checkArguments(plugin, sender, permission, node)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, node)) {
|
InheritanceType inheritanceType = NodeTypes.parseInheritanceType(node);
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
if (inheritanceType != null) {
|
||||||
return CommandResult.NO_PERMISSION;
|
if (ArgumentPermissions.checkGroup(plugin, sender, inheritanceType.getGroupName(), context)) {
|
||||||
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
|
return CommandResult.NO_PERMISSION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DataMutateResult result = holder.unsetPermission(NodeFactory.builder(node).withExtraContext(context).build());
|
DataMutateResult result = holder.unsetPermission(NodeFactory.builder(node).withExtraContext(context).build());
|
||||||
|
@ -27,6 +27,7 @@ package me.lucko.luckperms.common.commands.generic.permission;
|
|||||||
|
|
||||||
import me.lucko.luckperms.api.DataMutateResult;
|
import me.lucko.luckperms.api.DataMutateResult;
|
||||||
import me.lucko.luckperms.api.context.MutableContextSet;
|
import me.lucko.luckperms.api.context.MutableContextSet;
|
||||||
|
import me.lucko.luckperms.api.nodetype.types.InheritanceType;
|
||||||
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
import me.lucko.luckperms.common.actionlog.ExtendedLogEntry;
|
||||||
import me.lucko.luckperms.common.command.CommandResult;
|
import me.lucko.luckperms.common.command.CommandResult;
|
||||||
import me.lucko.luckperms.common.command.abstraction.CommandException;
|
import me.lucko.luckperms.common.command.abstraction.CommandException;
|
||||||
@ -43,6 +44,7 @@ import me.lucko.luckperms.common.locale.command.CommandSpec;
|
|||||||
import me.lucko.luckperms.common.locale.message.Message;
|
import me.lucko.luckperms.common.locale.message.Message;
|
||||||
import me.lucko.luckperms.common.model.PermissionHolder;
|
import me.lucko.luckperms.common.model.PermissionHolder;
|
||||||
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
import me.lucko.luckperms.common.node.factory.NodeFactory;
|
||||||
|
import me.lucko.luckperms.common.node.model.NodeTypes;
|
||||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||||
import me.lucko.luckperms.common.sender.Sender;
|
import me.lucko.luckperms.common.sender.Sender;
|
||||||
import me.lucko.luckperms.common.utils.Predicates;
|
import me.lucko.luckperms.common.utils.Predicates;
|
||||||
@ -64,14 +66,19 @@ public class PermissionUnsetTemp extends SharedSubCommand {
|
|||||||
String node = ArgumentParser.parseString(0, args);
|
String node = ArgumentParser.parseString(0, args);
|
||||||
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
MutableContextSet context = ArgumentParser.parseContext(1, args, plugin);
|
||||||
|
|
||||||
if (ArgumentPermissions.checkContext(plugin, sender, permission, context)) {
|
if (ArgumentPermissions.checkContext(plugin, sender, permission, context) ||
|
||||||
|
ArgumentPermissions.checkGroup(plugin, sender, holder, context) ||
|
||||||
|
ArgumentPermissions.checkArguments(plugin, sender, permission, node)) {
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArgumentPermissions.checkArguments(plugin, sender, permission, node)) {
|
InheritanceType inheritanceType = NodeTypes.parseInheritanceType(node);
|
||||||
Message.COMMAND_NO_PERMISSION.send(sender);
|
if (inheritanceType != null) {
|
||||||
return CommandResult.NO_PERMISSION;
|
if (ArgumentPermissions.checkGroup(plugin, sender, inheritanceType.getGroupName(), context)) {
|
||||||
|
Message.COMMAND_NO_PERMISSION.send(sender);
|
||||||
|
return CommandResult.NO_PERMISSION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DataMutateResult result = holder.unsetPermission(NodeFactory.builder(node).setExpiry(10L).withExtraContext(context).build());
|
DataMutateResult result = holder.unsetPermission(NodeFactory.builder(node).setExpiry(10L).withExtraContext(context).build());
|
||||||
|
@ -49,6 +49,7 @@ import me.lucko.luckperms.common.storage.DataConstraints;
|
|||||||
import me.lucko.luckperms.common.utils.Predicates;
|
import me.lucko.luckperms.common.utils.Predicates;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class UserDemote extends SubCommand<User> {
|
public class UserDemote extends SubCommand<User> {
|
||||||
public UserDemote(LocaleManager locale) {
|
public UserDemote(LocaleManager locale) {
|
||||||
@ -88,7 +89,11 @@ public class UserDemote extends SubCommand<User> {
|
|||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
DemotionResult result = track.demote(user, context, s -> !ArgumentPermissions.checkArguments(plugin, sender, getPermission().get(), track.getName(), s), sender, removeFromFirst);
|
Predicate<String> previousGroupPermissionChecker = s ->
|
||||||
|
!ArgumentPermissions.checkArguments(plugin, sender, getPermission().get(), track.getName(), s) &&
|
||||||
|
!ArgumentPermissions.checkGroup(plugin, sender, s, context);
|
||||||
|
|
||||||
|
DemotionResult result = track.demote(user, context, previousGroupPermissionChecker, sender, removeFromFirst);
|
||||||
switch (result.getStatus()) {
|
switch (result.getStatus()) {
|
||||||
case NOT_ON_TRACK:
|
case NOT_ON_TRACK:
|
||||||
Message.USER_TRACK_ERROR_NOT_CONTAIN_GROUP.send(sender, user.getFriendlyName(), track.getName());
|
Message.USER_TRACK_ERROR_NOT_CONTAIN_GROUP.send(sender, user.getFriendlyName(), track.getName());
|
||||||
|
@ -49,6 +49,7 @@ import me.lucko.luckperms.common.storage.DataConstraints;
|
|||||||
import me.lucko.luckperms.common.utils.Predicates;
|
import me.lucko.luckperms.common.utils.Predicates;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public class UserPromote extends SubCommand<User> {
|
public class UserPromote extends SubCommand<User> {
|
||||||
public UserPromote(LocaleManager locale) {
|
public UserPromote(LocaleManager locale) {
|
||||||
@ -88,7 +89,11 @@ public class UserPromote extends SubCommand<User> {
|
|||||||
return CommandResult.NO_PERMISSION;
|
return CommandResult.NO_PERMISSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
PromotionResult result = track.promote(user, context, s -> !ArgumentPermissions.checkArguments(plugin, sender, getPermission().get(), track.getName(), s), sender, addToFirst);
|
Predicate<String> nextGroupPermissionChecker = s ->
|
||||||
|
!ArgumentPermissions.checkArguments(plugin, sender, getPermission().get(), track.getName(), s) &&
|
||||||
|
!ArgumentPermissions.checkGroup(plugin, sender, s, context);
|
||||||
|
|
||||||
|
PromotionResult result = track.promote(user, context, nextGroupPermissionChecker, sender, addToFirst);
|
||||||
switch (result.getStatus()) {
|
switch (result.getStatus()) {
|
||||||
case MALFORMED_TRACK:
|
case MALFORMED_TRACK:
|
||||||
Message.USER_PROMOTE_ERROR_MALFORMED.send(sender, result.getGroupTo().get());
|
Message.USER_PROMOTE_ERROR_MALFORMED.send(sender, result.getGroupTo().get());
|
||||||
|
@ -181,6 +181,12 @@ public final class ConfigKeys {
|
|||||||
*/
|
*/
|
||||||
public static final ConfigKey<Boolean> USE_ARGUMENT_BASED_COMMAND_PERMISSIONS = BooleanKey.of("argument-based-command-permissions", false);
|
public static final ConfigKey<Boolean> USE_ARGUMENT_BASED_COMMAND_PERMISSIONS = BooleanKey.of("argument-based-command-permissions", false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the plugin should check whether senders are a member of a given group
|
||||||
|
* before they're able to edit the groups permissions or add/remove it from other users.
|
||||||
|
*/
|
||||||
|
public static final ConfigKey<Boolean> REQUIRE_SENDER_GROUP_MEMBERSHIP_TO_MODIFY = BooleanKey.of("require-sender-group-membership-to-modify", false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If wildcards are being applied
|
* If wildcards are being applied
|
||||||
*/
|
*/
|
||||||
|
@ -276,6 +276,11 @@ primary-group-calculation: parents-by-weight
|
|||||||
# the arguments given within the command.
|
# the arguments given within the command.
|
||||||
argument-based-command-permissions: false
|
argument-based-command-permissions: false
|
||||||
|
|
||||||
|
# If the plugin should check whether senders are a member of a given group before they're able to
|
||||||
|
# edit the groups data or add/remove other users to/from it.
|
||||||
|
# Note: these limitations do not apply to the web editor!
|
||||||
|
require-sender-group-membership-to-modify: false
|
||||||
|
|
||||||
# If the plugin should send log notifications to users whenever permissions are modified.
|
# If the plugin should send log notifications to users whenever permissions are modified.
|
||||||
#
|
#
|
||||||
# - Notifications are only sent to those with the appropriate permission to receive them
|
# - Notifications are only sent to those with the appropriate permission to receive them
|
||||||
|
@ -285,6 +285,11 @@ primary-group-calculation = "parents-by-weight"
|
|||||||
# the arguments given within the command.
|
# the arguments given within the command.
|
||||||
argument-based-command-permissions = false
|
argument-based-command-permissions = false
|
||||||
|
|
||||||
|
# If the plugin should check whether senders are a member of a given group before they're able to
|
||||||
|
# edit the groups data or add/remove other users to/from it.
|
||||||
|
# Note: these limitations do not apply to the web editor!
|
||||||
|
require-sender-group-membership-to-modify = false
|
||||||
|
|
||||||
# If the plugin should send log notifications to users whenever permissions are modified.
|
# If the plugin should send log notifications to users whenever permissions are modified.
|
||||||
#
|
#
|
||||||
# - Notifications are only sent to those with the appropriate permission to receive them
|
# - Notifications are only sent to those with the appropriate permission to receive them
|
||||||
|
@ -280,6 +280,11 @@ primary-group-calculation: parents-by-weight
|
|||||||
# the arguments given within the command.
|
# the arguments given within the command.
|
||||||
argument-based-command-permissions: false
|
argument-based-command-permissions: false
|
||||||
|
|
||||||
|
# If the plugin should check whether senders are a member of a given group before they're able to
|
||||||
|
# edit the groups data or add/remove other users to/from it.
|
||||||
|
# Note: these limitations do not apply to the web editor!
|
||||||
|
require-sender-group-membership-to-modify: false
|
||||||
|
|
||||||
# If the plugin should send log notifications to users whenever permissions are modified.
|
# If the plugin should send log notifications to users whenever permissions are modified.
|
||||||
#
|
#
|
||||||
# - Notifications are only sent to those with the appropriate permission to receive them
|
# - Notifications are only sent to those with the appropriate permission to receive them
|
||||||
|
Loading…
Reference in New Issue
Block a user