Files
WebServer/src/main/java/org/openautonomousconnection/webserver/api/SessionContext.java

48 lines
1.8 KiB
Java
Raw Normal View History

2025-12-12 21:16:13 +01:00
package org.openautonomousconnection.webserver.api;
2026-02-01 19:28:45 +01:00
import org.openautonomousconnection.protocol.side.server.CustomConnectedClient;
2025-12-12 21:16:13 +01:00
import org.openautonomousconnection.protocol.side.web.ProtocolWebServer;
import org.openautonomousconnection.protocol.side.web.managers.SessionManager;
import java.io.IOException;
import java.util.Map;
/**
* Provides session-related information for Java WebPages.
* Thin layer on top of SessionManager.
*/
public final class SessionContext {
private final String sessionId;
private final String user;
private final boolean valid;
private SessionContext(String sessionId, String user, boolean valid) {
this.sessionId = sessionId;
this.user = user;
this.valid = valid;
}
2026-02-01 19:28:45 +01:00
public static SessionContext from(CustomConnectedClient client, ProtocolWebServer server, Map<String, String> headers) throws IOException {
2025-12-12 21:16:13 +01:00
if (headers == null) return new SessionContext(null, null, false);
String sessionId = headers.get("session");
if (sessionId == null) return new SessionContext(null, null, false);
2026-02-01 19:28:45 +01:00
String ip = (client.getConnection().getTcpSocket() != null && client.getConnection().getTcpSocket().getInetAddress() != null)
? client.getConnection().getTcpSocket().getInetAddress().getHostAddress() : "";
2025-12-12 21:16:13 +01:00
String userAgent = headers.getOrDefault("user-agent", "");
boolean valid = SessionManager.isValid(sessionId, ip, userAgent, server);
if (!valid) return new SessionContext(sessionId, null, false);
String user = SessionManager.getUser(sessionId);
return new SessionContext(sessionId, user, true);
}
public boolean isValid() { return valid; }
public String getSessionId() { return sessionId; }
public String getUser() { return user; }
}