mirror of
https://github.com/AuthMe/AuthMeReloaded.git
synced 2025-02-03 21:41:30 +01:00
Add a way to load user's permission data from the permission handler on demand.
#1350
This commit is contained in:
parent
316f8fc642
commit
a5542051f4
@ -4,6 +4,7 @@ import fr.xephi.authme.data.auth.PlayerAuth;
|
||||
import fr.xephi.authme.datasource.DataSource;
|
||||
import fr.xephi.authme.message.MessageKey;
|
||||
import fr.xephi.authme.message.Messages;
|
||||
import fr.xephi.authme.permission.PermissionsManager;
|
||||
import fr.xephi.authme.process.Management;
|
||||
import fr.xephi.authme.service.AntiBotService;
|
||||
import fr.xephi.authme.service.BukkitService;
|
||||
@ -79,6 +80,8 @@ public class PlayerListener implements Listener {
|
||||
private ValidationService validationService;
|
||||
@Inject
|
||||
private JoinMessageService joinMessageService;
|
||||
@Inject
|
||||
private PermissionsManager permissionsManager;
|
||||
|
||||
private static boolean isAsyncPlayerPreLoginEventCalled = false;
|
||||
|
||||
@ -234,6 +237,13 @@ public class PlayerListener implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
// Keep pre-UUID compatibility
|
||||
try {
|
||||
permissionsManager.loadUserData(event.getUniqueId());
|
||||
} catch (NoSuchMethodError e) {
|
||||
permissionsManager.loadUserData(name);
|
||||
}
|
||||
|
||||
try {
|
||||
runOnJoinChecks(name, event.getAddress().getHostAddress());
|
||||
} catch (FailedVerificationException e) {
|
||||
|
@ -23,6 +23,7 @@ import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* PermissionsManager.
|
||||
@ -425,4 +426,18 @@ public class PermissionsManager implements Reloadable {
|
||||
// Remove each group
|
||||
return removeGroups(player, groupNames);
|
||||
}
|
||||
|
||||
public void loadUserData(UUID uuid) {
|
||||
if(!isEnabled()) {
|
||||
return;
|
||||
}
|
||||
handler.loadUserData(uuid);
|
||||
}
|
||||
|
||||
public void loadUserData(String name) {
|
||||
if(!isEnabled()) {
|
||||
return;
|
||||
}
|
||||
handler.loadUserData(name);
|
||||
}
|
||||
}
|
||||
|
@ -11,9 +11,7 @@ import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.caching.PermissionData;
|
||||
import me.lucko.luckperms.api.caching.UserData;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@ -43,46 +41,6 @@ public class LuckPermsHandler implements PermissionHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private User getUser(String playerName) {
|
||||
Player player = Bukkit.getPlayerExact(playerName);
|
||||
if (player != null) {
|
||||
return getUser(player);
|
||||
}
|
||||
|
||||
UUID uuid = null;
|
||||
try {
|
||||
uuid = luckPermsApi.getStorage().getUUID(playerName).get(1, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (uuid == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return getUser(uuid);
|
||||
}
|
||||
|
||||
private User getUser(OfflinePlayer player) {
|
||||
return getUser(player.getUniqueId());
|
||||
}
|
||||
|
||||
private User getUser(UUID playerUuid) {
|
||||
User user = luckPermsApi.getUser(playerUuid);
|
||||
if (user == null) {
|
||||
// user not loaded, we need to load them from the storage.
|
||||
// this is a blocking call.
|
||||
try {
|
||||
luckPermsApi.getStorage().loadUser(playerUuid).get(1, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException | TimeoutException | ExecutionException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// then grab a new instance
|
||||
user = luckPermsApi.getUser(playerUuid);
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
private void saveUser(User user) {
|
||||
luckPermsApi.getStorage().saveUser(user)
|
||||
.thenAcceptAsync(wasSuccessful -> {
|
||||
@ -100,7 +58,7 @@ public class LuckPermsHandler implements PermissionHandler {
|
||||
return false;
|
||||
}
|
||||
|
||||
User user = getUser(player);
|
||||
User user = luckPermsApi.getUser(player.getName());
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
@ -123,7 +81,7 @@ public class LuckPermsHandler implements PermissionHandler {
|
||||
|
||||
@Override
|
||||
public boolean hasPermissionOffline(String name, PermissionNode node) {
|
||||
User user = getUser(name);
|
||||
User user = luckPermsApi.getUser(name);
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
@ -138,7 +96,7 @@ public class LuckPermsHandler implements PermissionHandler {
|
||||
|
||||
@Override
|
||||
public boolean isInGroup(OfflinePlayer player, String group) {
|
||||
User user = getUser(player);
|
||||
User user = luckPermsApi.getUser(player.getName());
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
@ -152,7 +110,7 @@ public class LuckPermsHandler implements PermissionHandler {
|
||||
|
||||
@Override
|
||||
public boolean removeFromGroup(OfflinePlayer player, String group) {
|
||||
User user = getUser(player);
|
||||
User user = luckPermsApi.getUser(player.getName());
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
@ -171,7 +129,7 @@ public class LuckPermsHandler implements PermissionHandler {
|
||||
|
||||
@Override
|
||||
public boolean setGroup(OfflinePlayer player, String group) {
|
||||
User user = getUser(player);
|
||||
User user = luckPermsApi.getUser(player.getName());
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
@ -193,7 +151,7 @@ public class LuckPermsHandler implements PermissionHandler {
|
||||
|
||||
@Override
|
||||
public List<String> getGroups(OfflinePlayer player) {
|
||||
User user = getUser(player);
|
||||
User user = luckPermsApi.getUser(player.getName());
|
||||
if (user == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
@ -223,4 +181,24 @@ public class LuckPermsHandler implements PermissionHandler {
|
||||
public PermissionsSystemType getPermissionSystem() {
|
||||
return PermissionsSystemType.LUCK_PERMS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUserData(UUID uuid) {
|
||||
try {
|
||||
luckPermsApi.getStorage().loadUser(uuid).get(5, TimeUnit.SECONDS);
|
||||
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUserData(String name) {
|
||||
try {
|
||||
UUID uuid = luckPermsApi.getStorage().getUUID(name).get(5, TimeUnit.SECONDS);
|
||||
loadUserData(uuid);
|
||||
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import fr.xephi.authme.util.Utils;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface PermissionHandler {
|
||||
|
||||
@ -105,4 +106,11 @@ public interface PermissionHandler {
|
||||
* @return The permission system.
|
||||
*/
|
||||
PermissionsSystemType getPermissionSystem();
|
||||
|
||||
default void loadUserData(UUID uuid) {
|
||||
}
|
||||
|
||||
default void loadUserData(String name) {
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -197,6 +197,11 @@ public class PurgeExecutor {
|
||||
}
|
||||
|
||||
for (OfflinePlayer offlinePlayer : cleared) {
|
||||
try {
|
||||
permissionsManager.loadUserData(offlinePlayer.getUniqueId());
|
||||
} catch (NoSuchMethodError e) {
|
||||
permissionsManager.loadUserData(offlinePlayer.getName());
|
||||
}
|
||||
permissionsManager.removeAllGroups(offlinePlayer);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user