Launcher/LaunchServer/src/main/java/pro/gravit/launchserver/socket/response/auth/AdditionalDataResponse.java

64 lines
2.3 KiB
Java

package pro.gravit.launchserver.socket.response.auth;
import io.netty.channel.ChannelHandlerContext;
import pro.gravit.launcher.base.events.request.AdditionalDataRequestEvent;
import pro.gravit.launchserver.auth.AuthProviderPair;
import pro.gravit.launchserver.auth.core.User;
import pro.gravit.launchserver.auth.core.interfaces.user.UserSupportAdditionalData;
import pro.gravit.launchserver.socket.Client;
import pro.gravit.launchserver.socket.response.SimpleResponse;
import java.util.Map;
import java.util.UUID;
public class AdditionalDataResponse extends SimpleResponse {
public String username;
public UUID uuid;
@Override
public String getType() {
return "additionalData";
}
@Override
public void execute(ChannelHandlerContext ctx, Client client) {
if (!client.isAuth) {
sendError("Access denied");
return;
}
AuthProviderPair pair = client.auth;
if (username == null && uuid == null) {
Map<String, String> properties;
User user = client.getUser();
if (user instanceof UserSupportAdditionalData userSupport) {
if (client.permissions.hasPerm("launchserver.request.addionaldata.privileged")) {
properties = userSupport.getPropertiesMap();
} else {
properties = userSupport.getPropertiesMapUnprivilegedSelf();
}
} else {
properties = Map.of();
}
sendResult(new AdditionalDataRequestEvent(properties));
return;
}
User user;
if (username != null) {
user = pair.core.getUserByUsername(username);
} else {
user = pair.core.getUserByUUID(uuid);
}
if (!(user instanceof UserSupportAdditionalData userSupport)) {
sendResult(new AdditionalDataRequestEvent(Map.of()));
return;
}
Map<String, String> properties;
if (client.permissions.hasPerm("launchserver.request.addionaldata.privileged")) {
properties = userSupport.getPropertiesMap();
} else {
properties = userSupport.getPropertiesMapUnprivileged();
}
sendResult(new AdditionalDataRequestEvent(properties));
}
}