preparing svelte login, mastered translations

This commit is contained in:
2025-06-28 00:23:37 +02:00
parent f81fa50f27
commit 71cf6ec96d
17 changed files with 151 additions and 38 deletions

View File

@@ -0,0 +1,54 @@
/* © SRSoftware 2025 */
package de.srsoftware.umbrella.user;
import com.sun.net.httpserver.HttpExchange;
import de.srsoftware.tools.MimeType;
import de.srsoftware.tools.Path;
import de.srsoftware.tools.PathHandler;
import de.srsoftware.tools.SessionToken;
import org.json.JSONObject;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;
import static de.srsoftware.tools.MimeType.MIME_JSON;
public class UserModule extends PathHandler {
private HttpExchange addCors(HttpExchange ex){
var headers = ex.getResponseHeaders();
headers.add("Allow-Origin","*");
headers.add("Access-Control-Allow-Origin","*");
headers.add("Access-Control-Allow-Headers","Content-Type");
return ex;
}
@Override
public boolean doOptions(Path path, HttpExchange ex) throws IOException {
return sendEmptyResponse(200,addCors(ex));
}
@Override
public boolean doPost(Path path, HttpExchange ex) throws IOException {
addCors(ex);
var p = path.toString();
switch (p){
case "login": return postLogin(ex);
}
return super.doPost(path, ex);
}
private boolean postLogin(HttpExchange ex) throws IOException {
var json = json(ex);
if (!(json.has("username") && json.get("username") instanceof String username)) return sendContent(ex,402,"Username missing");
if (!(json.has("password") && json.get("password") instanceof String password)) return sendContent(ex,402,"Password missing");
if (!username.equals(password)) return sendContent(ex,401,"Login failed");
var sessionId = UUID.randomUUID().toString();
new SessionToken(sessionId).addTo(ex);
ex.getResponseHeaders().add("Content-Type", MIME_JSON);
return sendContent(ex,200,new JSONObject(Map.of("username",username)).toString());
}
}