Fix meta command showing when a user doesn't have permission to use it

This commit is contained in:
Luck 2016-10-11 21:17:04 +01:00
parent d433a5461d
commit e079b0f3ed
No known key found for this signature in database
GPG Key ID: EFA9B3EC5FD90F8B
4 changed files with 18 additions and 6 deletions

View File

@ -123,7 +123,7 @@ public abstract class SubCommand<T> {
* @return true if the sender can use the command
*/
public boolean isAuthorized(Sender sender) {
return permission == null || permission.isAuthorized(sender);
return permission.isAuthorized(sender);
}

View File

@ -52,7 +52,7 @@ public class GroupMainCommand extends MainCommand<Group> {
.add(new GroupSetTempInherit())
.add(new GroupUnsetTempInherit())
.add(new GroupShowTracks())
.add(new MetaCommands<>())
.add(new MetaCommands<>(false))
.add(new GroupBulkChange())
.add(new GroupClear())
.add(new GroupRename())

View File

@ -23,6 +23,7 @@
package me.lucko.luckperms.commands.meta;
import com.google.common.collect.ImmutableList;
import lombok.RequiredArgsConstructor;
import me.lucko.luckperms.LuckPermsPlugin;
import me.lucko.luckperms.commands.*;
import me.lucko.luckperms.commands.meta.subcommands.*;
@ -36,6 +37,8 @@ import java.util.Optional;
import java.util.stream.Collectors;
public class MetaCommands<T extends PermissionHolder> extends SubCommand<T> {
private boolean user;
private final List<MetaSubCommand> subCommands = ImmutableList.<MetaSubCommand>builder()
.add(new MetaInfo())
.add(new MetaAddPrefix())
@ -49,14 +52,13 @@ public class MetaCommands<T extends PermissionHolder> extends SubCommand<T> {
.add(new MetaClear())
.build();
public MetaCommands() {
public MetaCommands(boolean user) {
super("meta", "Edit metadata values", null, Predicate.alwaysFalse(), null);
this.user = user;
}
@Override
public CommandResult execute(LuckPermsPlugin plugin, Sender sender, T t, List<String> args, String label) {
boolean user = t instanceof User;
if (args.size() == 0) {
sendUsageMeta(sender, user, label);
return CommandResult.INVALID_ARGS;
@ -91,6 +93,16 @@ public class MetaCommands<T extends PermissionHolder> extends SubCommand<T> {
return sub.execute(plugin, sender, t, strippedArgs);
}
@Override
public boolean isAuthorized(Sender sender) {
for (MetaSubCommand subCommand : subCommands) {
if (subCommand.isAuthorized(sender, user)) {
return true;
}
}
return false;
}
private void sendUsageMeta(Sender sender, boolean user, String label) {
List<MetaSubCommand> subs = subCommands.stream()
.filter(s -> s.isAuthorized(sender, user))

View File

@ -59,7 +59,7 @@ public class UserMainCommand extends MainCommand<User> {
.add(new UserPromote())
.add(new UserDemote())
.add(new UserShowPos())
.add(new MetaCommands<>())
.add(new MetaCommands<>(true))
.add(new UserBulkChange())
.add(new UserClear())
.build()