WIP: Access method for commands
This commit is contained in:
parent
94c4ee815a
commit
9c6cc187f2
BIN
classes/artifacts/Factions_jar/Factions.jar
Normal file
BIN
classes/artifacts/Factions_jar/Factions.jar
Normal file
Binary file not shown.
@ -34,16 +34,12 @@ public class CmdBan extends FCommand {
|
||||
@Override
|
||||
public void perform() {
|
||||
|
||||
// Adds bypass to admins and clean permission check
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.BAN);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "ban");
|
||||
return;
|
||||
}
|
||||
// Simplified for clarity
|
||||
if (!this.hasAccess(PermissableAction.BAN)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "manage bans");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Good on permission checks. Now lets just ban the player.
|
||||
FPlayer target = argAsFPlayer(0);
|
||||
if (target == null) {
|
||||
|
@ -6,6 +6,7 @@ import com.massivecraft.factions.Faction;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.struct.BanInfo;
|
||||
import com.massivecraft.factions.struct.Permission;
|
||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -32,6 +33,10 @@ public class CmdBanlist extends FCommand {
|
||||
|
||||
@Override
|
||||
public void perform() {
|
||||
if (!this.hasAccess(PermissableAction.BAN)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "manage bans");
|
||||
return;
|
||||
}
|
||||
Faction target = myFaction;
|
||||
if (!args.isEmpty()) {
|
||||
target = argAsFaction(0);
|
||||
|
@ -32,12 +32,9 @@ public class CmdChest extends FCommand {
|
||||
return;
|
||||
}
|
||||
// This permission check is way too explicit but it's clean
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.CHEST);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "access chest");
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.CHEST)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "access chest");
|
||||
return;
|
||||
}
|
||||
|
||||
me.openInventory(fme.getFaction().getChest());
|
||||
|
@ -37,12 +37,9 @@ public class CmdClaim extends FCommand {
|
||||
int radius = this.argAsInt(0, 1); // Default to 1
|
||||
final Faction forFaction = this.argAsFaction(1, myFaction); // Default to own
|
||||
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.TERRITORY);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "change faction territory");
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.TERRITORY)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "change faction territory");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -34,12 +34,9 @@ public class CmdDeinvite extends FCommand {
|
||||
@Override
|
||||
public void perform() {
|
||||
FPlayer you = this.argAsBestFPlayerMatch(0);
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.INVITE);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "manage invites");
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.INVITE)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "manage invites");
|
||||
return;
|
||||
}
|
||||
if (you == null) {
|
||||
FancyMessage msg = new FancyMessage(TL.COMMAND_DEINVITE_CANDEINVITE.toString()).color(ChatColor.GOLD);
|
||||
|
@ -3,6 +3,7 @@ package com.massivecraft.factions.cmd;
|
||||
import com.massivecraft.factions.FPlayer;
|
||||
import com.massivecraft.factions.P;
|
||||
import com.massivecraft.factions.struct.Permission;
|
||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
|
||||
public class CmdDelFWarp extends FCommand {
|
||||
@ -22,6 +23,10 @@ public class CmdDelFWarp extends FCommand {
|
||||
@Override
|
||||
public void perform() {
|
||||
String warp = argAsString(0);
|
||||
if (!this.hasAccess(PermissableAction.WARP)){
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "manage warps");
|
||||
return;
|
||||
}
|
||||
if (myFaction.isWarp(warp)) {
|
||||
if (!transact(fme)) {
|
||||
return;
|
||||
|
@ -45,13 +45,6 @@ public class CmdDisband extends FCommand {
|
||||
|
||||
boolean isMyFaction = fme != null && faction == myFaction;
|
||||
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.DISBAND);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "disband faction");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!faction.isNormal()) {
|
||||
msg(TL.COMMAND_DISBAND_IMMUTABLE.toString());
|
||||
return;
|
||||
@ -60,6 +53,10 @@ public class CmdDisband extends FCommand {
|
||||
msg(TL.COMMAND_DISBAND_MARKEDPERMANENT.toString());
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.DISBAND)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "disband faction");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// check for tnt before disbanding.
|
||||
|
@ -31,12 +31,9 @@ public class CmdFWarp extends FCommand {
|
||||
@Override
|
||||
public void perform() {
|
||||
//TODO: check if in combat.
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.WARP);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "use warps");
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.WARP)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "use warps");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -36,6 +36,7 @@ public class CmdFly extends FCommand {
|
||||
this.senderMustBeMember = true;
|
||||
this.senderMustBeModerator = false;
|
||||
}
|
||||
/// I'll optimize this later today or tomorrow
|
||||
|
||||
public static void startParticles() {
|
||||
id = Bukkit.getScheduler().scheduleSyncRepeatingTask(P.p, new Runnable() {
|
||||
|
@ -2,6 +2,7 @@ package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.P;
|
||||
import com.massivecraft.factions.struct.Permission;
|
||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -33,7 +34,10 @@ public class CmdGetVault extends FCommand {
|
||||
Location vaultLocation = fme.getFaction().getVault();
|
||||
ItemStack vault = P.p.createItem(Material.CHEST, 1, (short) 0, P.p.color(P.p.getConfig().getString("fvault.Item.Name")), P.p.colorList(P.p.getConfig().getStringList("fvault.Item.Lore")));
|
||||
|
||||
|
||||
if (!this.hasAccess(PermissableAction.VAULT)) {
|
||||
fme.msg(TL.GENERIC_NOPERMISSION, "use vault");
|
||||
return;
|
||||
}
|
||||
//check if vault is set
|
||||
if (vaultLocation != null) {
|
||||
fme.msg(TL.COMMAND_GETVAULT_ALREADYSET);
|
||||
|
@ -49,12 +49,9 @@ public class CmdHome extends FCommand {
|
||||
fme.msg(TL.COMMAND_HOME_TELEPORTDISABLED);
|
||||
return;
|
||||
}
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.HOME);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "teleport home");
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.HOME)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "teleport home");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -22,6 +22,7 @@ public class CmdInspect extends FCommand {
|
||||
|
||||
@Override
|
||||
public void perform() {
|
||||
// Who can inspect?
|
||||
if (fme.isInspectMode()) {
|
||||
fme.setInspectMode(false);
|
||||
msg(TL.COMMAND_INSPECT_DISABLED_MSG);
|
||||
|
@ -48,12 +48,9 @@ public class CmdInvite extends FCommand {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.INVITE);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "manage invites");
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.INVITE)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "manage invites");
|
||||
return;
|
||||
}
|
||||
|
||||
if (myFaction.isInvited(target)) {
|
||||
|
@ -79,8 +79,7 @@ public class CmdKick extends FCommand {
|
||||
// - Make sure the player is in the faction.
|
||||
// - Make sure the kicked player has lower rank than the kicker.
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.KICK);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
if (!this.hasAccess(PermissableAction.KICK, false)) {
|
||||
fme.msg(TL.GENERIC_NOPERMISSION, "kick");
|
||||
return;
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.struct.Permission;
|
||||
import com.massivecraft.factions.struct.Role;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
|
||||
public class CmdLogins extends FCommand {
|
||||
@ -18,6 +19,11 @@ public class CmdLogins extends FCommand {
|
||||
|
||||
@Override
|
||||
public void perform() {
|
||||
/// Perhaps add a PermissableAction later?
|
||||
if (!fme.getRole().isAtLeast(Role.MODERATOR)) {
|
||||
fme.msg(TL.GENERIC_NOPERMISSION, "monitor joins");
|
||||
return;
|
||||
}
|
||||
boolean monitor = fme.isMonitoringJoins();
|
||||
fme.msg(TL.COMMAND_LOGINS_TOGGLE, String.valueOf(!monitor));
|
||||
fme.setMonitorJoins(!monitor);
|
||||
|
@ -37,12 +37,9 @@ public class CmdSetFWarp extends FCommand {
|
||||
|
||||
// This statement allows us to check if they've specifically denied it, or default to
|
||||
// the old setting of allowing moderators to set warps.
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.SETWARP);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "set warps");
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.SETWARP)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "set warps");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -40,12 +40,9 @@ public class CmdSethome extends FCommand {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(fme, PermissableAction.SETHOME);
|
||||
if (access != Access.ALLOW && fme.getRole() != Role.ADMIN && !Permission.SETHOME_ANY.has(sender, true)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "set home");
|
||||
return;
|
||||
}
|
||||
if (!this.hasAccess(PermissableAction.SETHOME) && !Permission.SETHOME_ANY.has(sender, true)) {
|
||||
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "set home");
|
||||
return;
|
||||
}
|
||||
|
||||
// Can the player set the faction home HERE?
|
||||
|
@ -4,6 +4,7 @@ import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.ListMultimap;
|
||||
import com.massivecraft.factions.FLocation;
|
||||
import com.massivecraft.factions.struct.Permission;
|
||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
|
||||
public class CmdShowClaims extends FCommand {
|
||||
@ -25,6 +26,11 @@ public class CmdShowClaims extends FCommand {
|
||||
|
||||
@Override
|
||||
public void perform() {
|
||||
// #suggestion
|
||||
if (!this.hasAccess(PermissableAction.TERRITORY)) {
|
||||
fme.msg(TL.GENERIC_NOPERMISSION, "manage territory");
|
||||
return;
|
||||
}
|
||||
sendMessage(TL.COMMAND_SHOWCLAIMS_HEADER.toString().replace("{faction}", fme.getFaction().describeTo(fme)));
|
||||
ListMultimap<String, String> chunkMap = ArrayListMultimap.create();
|
||||
String format = TL.COMMAND_SHOWCLAIMS_CHUNKSFORMAT.toString();
|
||||
|
@ -4,6 +4,7 @@ import com.massivecraft.factions.Conf;
|
||||
import com.massivecraft.factions.FPlayer;
|
||||
import com.massivecraft.factions.FPlayers;
|
||||
import com.massivecraft.factions.struct.Permission;
|
||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
import mkremins.fanciful.FancyMessage;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -21,6 +22,10 @@ public class CmdShowInvites extends FCommand {
|
||||
|
||||
@Override
|
||||
public void perform() {
|
||||
if (!this.hasAccess(PermissableAction.INVITE)) {
|
||||
fme.msg(TL.GENERIC_NOPERMISSION, "manage invites");
|
||||
return;
|
||||
}
|
||||
FancyMessage msg = new FancyMessage(TL.COMMAND_SHOWINVITES_PENDING.toString()).color(ChatColor.GOLD);
|
||||
for (String id : myFaction.getInvites()) {
|
||||
FPlayer fp = FPlayers.getInstance().getById(id);
|
||||
|
@ -5,6 +5,8 @@ import com.massivecraft.factions.integration.Econ;
|
||||
import com.massivecraft.factions.struct.Role;
|
||||
import com.massivecraft.factions.util.WarmUpUtil;
|
||||
import com.massivecraft.factions.zcore.MCommand;
|
||||
import com.massivecraft.factions.zcore.fperms.Access;
|
||||
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
||||
import com.massivecraft.factions.zcore.util.TL;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -25,6 +27,7 @@ public abstract class FCommand extends MCommand<P> {
|
||||
public boolean senderMustBeModerator;
|
||||
public boolean senderMustBeAdmin;
|
||||
public boolean senderMustBeColeader;
|
||||
protected PermissableAction actionPermission;
|
||||
|
||||
public boolean isMoneyCommand;
|
||||
|
||||
@ -43,6 +46,47 @@ public abstract class FCommand extends MCommand<P> {
|
||||
senderMustBeAdmin = false;
|
||||
}
|
||||
|
||||
public boolean hasAccess() {
|
||||
if (this.permission == null || this.fme == null) return false;
|
||||
if (!this.fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(this.fme, permission);
|
||||
if (access != Access.ALLOW && this.fme.getRole() != Role.ADMIN) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public boolean hasAccess(boolean checkifAdmin) {
|
||||
if (this.permission == null || this.fme == null) return false;
|
||||
if (!this.fme.isAdminBypassing() && checkifAdmin) {
|
||||
Access access = myFaction.getAccess(this.fme, permission);
|
||||
if (access != Access.ALLOW && this.fme.getRole() != Role.ADMIN) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public boolean hasAccess(PermissableAction perm) {
|
||||
if (this.permission == null || this.fme == null) return false;
|
||||
if (!this.fme.isAdminBypassing()) {
|
||||
Access access = myFaction.getAccess(this.fme, perm);
|
||||
if (access != Access.ALLOW && this.fme.getRole() != Role.ADMIN) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public boolean hasAccess(PermissableAction perm, boolean checkifAdmin) {
|
||||
if (this.permission == null || this.fme == null) return false;
|
||||
if (!this.fme.isAdminBypassing() && checkifAdmin) {
|
||||
Access access = myFaction.getAccess(this.fme, perm);
|
||||
if (access != Access.ALLOW && this.fme.getRole() != Role.ADMIN) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, List<String> args, List<MCommand<?>> commandChain) {
|
||||
if (sender instanceof Player) {
|
||||
|
Loading…
Reference in New Issue
Block a user