Fix plan unregister permission check

- If the permission check was false, due to && the deletion would complete.
  This seems like a thought error when trying to figure out the condition
  for this if clause.

The confusing use of negation was replaced with a more readable
if clause that clearly signifies intent of the check.

Affects issues:
- Fixed #1487
This commit is contained in:
Risto Lahtela 2020-06-19 16:44:00 +03:00
parent 47ef46eb97
commit f62e76bcf5

View File

@ -116,14 +116,12 @@ public class UnregisterCommand extends CommandNode {
return;
}
User presentUser = found.get();
if (!Objects.equals(playerUUID, presentUser.getLinkedToUUID()) && sender.hasPermission(Permissions.MANAGE_WEB.getPerm())) {
boolean linkedToSender = Objects.equals(playerUUID, presentUser.getLinkedToUUID());
if (linkedToSender || sender.hasPermission(Permissions.MANAGE_WEB.getPerm())) {
deleteUser(sender, database, username);
} else {
sender.sendMessage("§c" + locale.getString(CommandLang.USER_NOT_LINKED));
return;
}
sender.sendMessage(locale.getString(ManageLang.PROGRESS_START));
database.executeTransaction(new RemoveWebUserTransaction(username))
.get(); // Wait for completion
sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS));
} catch (Exception e) {
errorLogger.log(L.ERROR, this.getClass(), e);
sender.sendMessage(locale.getString(ManageLang.PROGRESS_FAIL, e.getMessage()));
@ -131,4 +129,11 @@ public class UnregisterCommand extends CommandNode {
});
}
private void deleteUser(Sender sender, Database database, String username) throws InterruptedException, java.util.concurrent.ExecutionException {
sender.sendMessage(locale.getString(ManageLang.PROGRESS_START));
database.executeTransaction(new RemoveWebUserTransaction(username))
.get(); // Wait for completion
sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS));
}
}