diff --git a/src/Main.java b/src/Main.java index 699f9d2..cb24af4 100644 --- a/src/Main.java +++ b/src/Main.java @@ -6,7 +6,7 @@ import com.sun.net.httpserver.*; import java.net.InetSocketAddress; /** - * Die Main-Klasse mit dem Einstiegspunkt der Anwendung + * Die Main-Klasse mit dem Einstiegspunkt der Anwendung. */ public class Main { @@ -17,7 +17,12 @@ public class Main { public static void main(String[] args) throws Exception { HttpServer s = HttpServer.create(new InetSocketAddress(8000), 0); + // Kontexts werden nach längstem Matching ausgewählt (wieso?) + // Alle unbekannten Anfragen die mit / starten werden also an die RootView gegeben + // TODO: Error Handling!!! + s.createContext("/", new RootView()); s.createContext("/main", new StartView()); + s.createContext("/auth", new AuthView()); s.setExecutor(null); s.start(); diff --git a/src/views/AuthView.java b/src/views/AuthView.java new file mode 100644 index 0000000..75c3e90 --- /dev/null +++ b/src/views/AuthView.java @@ -0,0 +1,46 @@ +package hsmw.jotto5.beleg.views; + +import java.io.IOException; +import java.io.OutputStream; +import com.sun.net.httpserver.*; + +/** + * Stellt das Login-Formular bereit und verwaltet die Anmeldung. + * + * Bei einer GET-Anfrage ohne gültige Session wird das Login-Formular + * zurückgegeben. Bei einer POST-Anfrage wird versucht, mit den gegebenen + * Anmeldedaten in den name und pass Anfragewerten zu autorisieren. + * + * Bei erfolgter Autorisierung oder bei Aufruf mit gültiger Session wird an den + * main Endpunkt weitergeleitet. + */ +public class AuthView implements HttpHandler { + + public void handle(HttpExchange t) throws IOException { + String response; + OutputStream os; + boolean login = false; + + os = t.getResponseBody(); + + // TODO: nach Session prüfen + + if (t.getRequestMethod().equals("POST")) { + // TODO: Versuchen zu autorisieren + login = true; + } else { + response = "