Skip to content

Commit

Permalink
Add permission clear and list commands (Grasscutters#1715)
Browse files Browse the repository at this point in the history
* Add permission clear and list commands

* Add Account clear permission
  • Loading branch information
jie65535 committed Aug 27, 2022
1 parent 656cb79 commit 32289e2
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,17 @@

import static emu.grasscutter.utils.Language.translate;

@Command(label = "permission", usage = "(add|remove) <permission>", permission = "permission", targetRequirement = TargetRequirement.PLAYER)
@Command(label = "permission", usage = {
"add <permission>",
"remove <permission>",
"clear",
"list"
}, permission = "permission", targetRequirement = TargetRequirement.PLAYER)
public final class PermissionCommand implements CommandHandler {

@Override
public void execute(Player sender, Player targetPlayer, List<String> args) {
if (args.size() != 2) {
if (args.isEmpty() || args.size() > 2) {
sendUsageMessage(sender);
return;
}
Expand All @@ -27,7 +32,10 @@ public void execute(Player sender, Player targetPlayer, List<String> args) {
}

String action = args.get(0);
String permission = args.get(1);
String permission = "";
if (args.size() > 1) {
permission = args.get(1);
}

Account account = targetPlayer.getAccount();
if (account == null) {
Expand All @@ -40,7 +48,9 @@ public void execute(Player sender, Player targetPlayer, List<String> args) {
sendUsageMessage(sender);
break;
case "add":
if (account.addPermission(permission)) {
if (permission.isEmpty()) {
sendUsageMessage(sender);
} else if (account.addPermission(permission)) {
CommandHandler.sendMessage(sender, translate(sender, "commands.permission.add"));
} else CommandHandler.sendMessage(sender, translate(sender, "commands.permission.has_error"));
break;
Expand All @@ -49,6 +59,13 @@ public void execute(Player sender, Player targetPlayer, List<String> args) {
CommandHandler.sendMessage(sender, translate(sender, "commands.permission.remove"));
} else CommandHandler.sendMessage(sender, translate(sender, "commands.permission.not_have_error"));
break;
case "clear":
account.clearPermission();
CommandHandler.sendMessage(sender, translate(sender, "commands.permission.remove"));
break;
case "list":
CommandHandler.sendMessage(sender, String.join("\n", account.getPermissions()));
break;
}

account.save();
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/emu/grasscutter/game/Account.java
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,10 @@ public boolean removePermission(String permission) {
return this.permissions.remove(permission);
}

public void clearPermission() {
this.permissions.clear();
}

// TODO make unique
public String generateLoginToken() {
this.token = Utils.bytesToHex(Crypto.createSessionKey(32));
Expand Down

0 comments on commit 32289e2

Please sign in to comment.