mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2025-03-02 11:31:13 +01:00
Add full support for transient permissions through Vault API (#3258)
This commit is contained in:
parent
2d662cbab9
commit
419d711fb6
@ -79,6 +79,8 @@ public abstract class AbstractVaultPermission extends Permission {
|
|||||||
public abstract boolean userHasPermission(String world, UUID uuid, String permission);
|
public abstract boolean userHasPermission(String world, UUID uuid, String permission);
|
||||||
public abstract boolean userAddPermission(String world, UUID uuid, String permission);
|
public abstract boolean userAddPermission(String world, UUID uuid, String permission);
|
||||||
public abstract boolean userRemovePermission(String world, UUID uuid, String permission);
|
public abstract boolean userRemovePermission(String world, UUID uuid, String permission);
|
||||||
|
public abstract boolean userAddTransient(String world, UUID uuid, String permission);
|
||||||
|
public abstract boolean userRemoveTransient(String world, UUID uuid, String permission);
|
||||||
public abstract boolean userInGroup(String world, UUID uuid, String group);
|
public abstract boolean userInGroup(String world, UUID uuid, String group);
|
||||||
public abstract boolean userAddGroup(String world, UUID uuid, String group);
|
public abstract boolean userAddGroup(String world, UUID uuid, String group);
|
||||||
public abstract boolean userRemoveGroup(String world, UUID uuid, String group);
|
public abstract boolean userRemoveGroup(String world, UUID uuid, String group);
|
||||||
@ -181,7 +183,7 @@ public abstract class AbstractVaultPermission extends Permission {
|
|||||||
public final boolean playerAdd(Player player, String permission) {
|
public final boolean playerAdd(Player player, String permission) {
|
||||||
Objects.requireNonNull(player, "player");
|
Objects.requireNonNull(player, "player");
|
||||||
Objects.requireNonNull(permission, "permission");
|
Objects.requireNonNull(permission, "permission");
|
||||||
return userAddPermission(convertWorld(player), ((OfflinePlayer) player).getUniqueId(), permission);
|
return userAddPermission(convertWorld(player), player.getUniqueId(), permission);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -209,7 +211,63 @@ public abstract class AbstractVaultPermission extends Permission {
|
|||||||
public final boolean playerRemove(Player player, String permission) {
|
public final boolean playerRemove(Player player, String permission) {
|
||||||
Objects.requireNonNull(player, "player");
|
Objects.requireNonNull(player, "player");
|
||||||
Objects.requireNonNull(permission, "permission");
|
Objects.requireNonNull(permission, "permission");
|
||||||
return userRemovePermission(convertWorld(player), ((OfflinePlayer) player).getUniqueId(), permission);
|
return userRemovePermission(convertWorld(player), player.getUniqueId(), permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean playerAddTransient(OfflinePlayer player, String permission) {
|
||||||
|
Objects.requireNonNull(player, "player");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
return userAddTransient(null, player.getUniqueId(), permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean playerAddTransient(Player player, String permission) {
|
||||||
|
Objects.requireNonNull(player, "player");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
return userAddTransient(convertWorld(player), player.getUniqueId(), permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean playerAddTransient(String world, OfflinePlayer player, String permission) {
|
||||||
|
Objects.requireNonNull(player, "player");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
return userAddTransient(convertWorld(world), player.getUniqueId(), permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean playerAddTransient(String world, Player player, String permission) {
|
||||||
|
Objects.requireNonNull(player, "player");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
return userAddTransient(convertWorld(world), player.getUniqueId(), permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean playerRemoveTransient(OfflinePlayer player, String permission) {
|
||||||
|
Objects.requireNonNull(player, "player");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
return userRemoveTransient(null, player.getUniqueId(), permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean playerRemoveTransient(Player player, String permission) {
|
||||||
|
Objects.requireNonNull(player, "player");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
return userRemoveTransient(convertWorld(player), player.getUniqueId(), permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean playerRemoveTransient(String world, OfflinePlayer player, String permission) {
|
||||||
|
Objects.requireNonNull(player, "player");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
return userRemoveTransient(convertWorld(world), player.getUniqueId(), permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final boolean playerRemoveTransient(String world, Player player, String permission) {
|
||||||
|
Objects.requireNonNull(player, "player");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
return userRemoveTransient(convertWorld(world), player.getUniqueId(), permission);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -279,7 +337,7 @@ public abstract class AbstractVaultPermission extends Permission {
|
|||||||
public final boolean playerInGroup(Player player, String group) {
|
public final boolean playerInGroup(Player player, String group) {
|
||||||
Objects.requireNonNull(player, "player");
|
Objects.requireNonNull(player, "player");
|
||||||
Objects.requireNonNull(group, "group");
|
Objects.requireNonNull(group, "group");
|
||||||
return userInGroup(convertWorld(player), ((OfflinePlayer) player).getUniqueId(), group);
|
return userInGroup(convertWorld(player), player.getUniqueId(), group);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -307,7 +365,7 @@ public abstract class AbstractVaultPermission extends Permission {
|
|||||||
public final boolean playerAddGroup(Player player, String group) {
|
public final boolean playerAddGroup(Player player, String group) {
|
||||||
Objects.requireNonNull(player, "player");
|
Objects.requireNonNull(player, "player");
|
||||||
Objects.requireNonNull(group, "group");
|
Objects.requireNonNull(group, "group");
|
||||||
return userAddGroup(convertWorld(player), ((OfflinePlayer) player).getUniqueId(), group);
|
return userAddGroup(convertWorld(player), player.getUniqueId(), group);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -334,7 +392,7 @@ public abstract class AbstractVaultPermission extends Permission {
|
|||||||
@Override
|
@Override
|
||||||
public final boolean playerRemoveGroup(Player player, String group) {
|
public final boolean playerRemoveGroup(Player player, String group) {
|
||||||
Objects.requireNonNull(player, "player");
|
Objects.requireNonNull(player, "player");
|
||||||
return userRemoveGroup(convertWorld(player), ((OfflinePlayer) player).getUniqueId(), group);
|
return userRemoveGroup(convertWorld(player), player.getUniqueId(), group);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -358,7 +416,7 @@ public abstract class AbstractVaultPermission extends Permission {
|
|||||||
@Override
|
@Override
|
||||||
public final String[] getPlayerGroups(Player player) {
|
public final String[] getPlayerGroups(Player player) {
|
||||||
Objects.requireNonNull(player, "player");
|
Objects.requireNonNull(player, "player");
|
||||||
return userGetGroups(convertWorld(player), ((OfflinePlayer) player).getUniqueId());
|
return userGetGroups(convertWorld(player), player.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -382,7 +440,7 @@ public abstract class AbstractVaultPermission extends Permission {
|
|||||||
@Override
|
@Override
|
||||||
public final String getPrimaryGroup(Player player) {
|
public final String getPrimaryGroup(Player player) {
|
||||||
Objects.requireNonNull(player, "player");
|
Objects.requireNonNull(player, "player");
|
||||||
return userGetPrimaryGroup(convertWorld(player), ((OfflinePlayer) player).getUniqueId());
|
return userGetPrimaryGroup(convertWorld(player), player.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -186,7 +186,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
|||||||
if (user instanceof Group) {
|
if (user instanceof Group) {
|
||||||
throw new UnsupportedOperationException("Unable to modify the permissions of NPC players");
|
throw new UnsupportedOperationException("Unable to modify the permissions of NPC players");
|
||||||
}
|
}
|
||||||
return holderAddPermission(user, permission, world);
|
return holderAddPermission(user, permission, world, DataType.NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -198,7 +198,31 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
|||||||
if (user instanceof Group) {
|
if (user instanceof Group) {
|
||||||
throw new UnsupportedOperationException("Unable to modify the permissions of NPC players");
|
throw new UnsupportedOperationException("Unable to modify the permissions of NPC players");
|
||||||
}
|
}
|
||||||
return holderRemovePermission(user, permission, world);
|
return holderRemovePermission(user, permission, world, DataType.NORMAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean userAddTransient(String world, UUID uuid, String permission) {
|
||||||
|
Objects.requireNonNull(uuid, "uuid");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
|
||||||
|
PermissionHolder user = lookupUser(uuid);
|
||||||
|
if (user instanceof Group) {
|
||||||
|
throw new UnsupportedOperationException("Unable to modify the permissions of NPC players");
|
||||||
|
}
|
||||||
|
return holderAddPermission(user, permission, world, DataType.TRANSIENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean userRemoveTransient(String world, UUID uuid, String permission) {
|
||||||
|
Objects.requireNonNull(uuid, "uuid");
|
||||||
|
Objects.requireNonNull(permission, "permission");
|
||||||
|
|
||||||
|
PermissionHolder user = lookupUser(uuid);
|
||||||
|
if (user instanceof Group) {
|
||||||
|
throw new UnsupportedOperationException("Unable to modify the permissions of NPC players");
|
||||||
|
}
|
||||||
|
return holderRemovePermission(user, permission, world, DataType.TRANSIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -288,7 +312,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return holderAddPermission(group, permission, world);
|
return holderAddPermission(group, permission, world, DataType.NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -301,7 +325,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return holderRemovePermission(group, permission, world);
|
return holderRemovePermission(group, permission, world, DataType.NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// utility methods for getting user and group instances
|
// utility methods for getting user and group instances
|
||||||
@ -387,7 +411,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
|||||||
|
|
||||||
// utility methods for modifying the state of PermissionHolders
|
// utility methods for modifying the state of PermissionHolders
|
||||||
|
|
||||||
private boolean holderAddPermission(PermissionHolder holder, String permission, String world) {
|
private boolean holderAddPermission(PermissionHolder holder, String permission, String world, DataType type) {
|
||||||
Objects.requireNonNull(permission, "permission is null");
|
Objects.requireNonNull(permission, "permission is null");
|
||||||
Preconditions.checkArgument(!permission.isEmpty(), "permission is an empty string");
|
Preconditions.checkArgument(!permission.isEmpty(), "permission is an empty string");
|
||||||
|
|
||||||
@ -396,13 +420,13 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
|||||||
.withContext(DefaultContextKeys.WORLD_KEY, world == null ? "global" : world)
|
.withContext(DefaultContextKeys.WORLD_KEY, world == null ? "global" : world)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
if (holder.setNode(DataType.NORMAL, node, true).wasSuccessful()) {
|
if (holder.setNode(type, node, true).wasSuccessful()) {
|
||||||
return holderSave(holder);
|
return holderSave(holder);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean holderRemovePermission(PermissionHolder holder, String permission, String world) {
|
private boolean holderRemovePermission(PermissionHolder holder, String permission, String world, DataType type) {
|
||||||
Objects.requireNonNull(permission, "permission is null");
|
Objects.requireNonNull(permission, "permission is null");
|
||||||
Preconditions.checkArgument(!permission.isEmpty(), "permission is an empty string");
|
Preconditions.checkArgument(!permission.isEmpty(), "permission is an empty string");
|
||||||
|
|
||||||
@ -411,7 +435,7 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
|||||||
.withContext(DefaultContextKeys.WORLD_KEY, world == null ? "global" : world)
|
.withContext(DefaultContextKeys.WORLD_KEY, world == null ? "global" : world)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
if (holder.unsetNode(DataType.NORMAL, node).wasSuccessful()) {
|
if (holder.unsetNode(type, node).wasSuccessful()) {
|
||||||
return holderSave(holder);
|
return holderSave(holder);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -460,4 +484,5 @@ public class LuckPermsVaultPermission extends AbstractVaultPermission {
|
|||||||
private boolean useVaultServer() {
|
private boolean useVaultServer() {
|
||||||
return this.plugin.getConfiguration().get(ConfigKeys.USE_VAULT_SERVER);
|
return this.plugin.getConfiguration().get(ConfigKeys.USE_VAULT_SERVER);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user