55 lines
1.8 KiB
Java
55 lines
1.8 KiB
Java
package com.actualplayer.rememberme.handlers;
|
|
|
|
import com.actualplayer.rememberme.RememberMe;
|
|
import me.lucko.luckperms.api.Contexts;
|
|
import me.lucko.luckperms.api.LuckPermsApi;
|
|
import me.lucko.luckperms.api.Node;
|
|
import me.lucko.luckperms.api.User;
|
|
import me.lucko.luckperms.api.caching.MetaData;
|
|
import me.lucko.luckperms.api.manager.UserManager;
|
|
|
|
import java.util.Optional;
|
|
import java.util.UUID;
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
|
public class LuckPermsHandler implements IRememberMeHandler {
|
|
|
|
private final LuckPermsApi api;
|
|
|
|
public LuckPermsHandler(LuckPermsApi api) {
|
|
this.api = api;
|
|
}
|
|
|
|
@Override
|
|
public CompletableFuture<String> getLastServerName(UUID uuid) {
|
|
UserManager userManager = api.getUserManager();
|
|
CompletableFuture<User> userFuture = userManager.loadUser(uuid);
|
|
return userFuture.thenApply(user -> {
|
|
if (user != null) {
|
|
Optional<Contexts> contextsOpt = api.getContextManager().lookupApplicableContexts(user);
|
|
|
|
if (contextsOpt.isPresent()) {
|
|
MetaData metaData = user.getCachedData().getMetaData(contextsOpt.get());
|
|
return metaData.getMeta().getOrDefault("last-server", null);
|
|
}
|
|
}
|
|
|
|
return null;
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void setLastServerName(UUID uuid, String serverName) {
|
|
User user = api.getUser(uuid);
|
|
if (user != null) {
|
|
// Remove last server
|
|
user.clearMatching(n -> n.isMeta() && n.getPermission().contains("meta.last-server"));
|
|
|
|
// Add current server as last server
|
|
Node node = api.getNodeFactory().newBuilder("meta.last-server." + serverName).build();
|
|
user.setPermission(node);
|
|
api.getUserManager().saveUser(user);
|
|
}
|
|
}
|
|
}
|