From 5f3b2b2874528e2b27506d06f691cd0fa77bf576 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 20:37:09 +0000 Subject: [PATCH] Add accounts, presets, live sheet panel and equipment tiles - Login with registration code, sessions, rate limiting, per-user characters - Share characters with other users (read-only), admin CLI - Rules presets with a Presets tab, applied/pending changes with diff in a side sheet - Equipment as tiles with amounts, starting kit removed - Rename nav tab to "Character", add "New character" button - Stop tracking _to_delete/ Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01HJhXuLD2Z6hv3Wqeq9UL9K --- .env.example | 5 + .gitignore | 2 + README.md | 47 +++-- _to_delete/awcc5.tgz | Bin 32694 -> 0 bytes _to_delete/awcc6.tgz | Bin 35140 -> 0 bytes _to_delete/awcc7.tgz | Bin 51257 -> 0 bytes _to_delete/awcc8.tgz | Bin 53356 -> 0 bytes _to_delete/awcc9.tgz | Bin 53654 -> 0 bytes backend/app/admin.py | 45 +++++ backend/app/auth.py | 106 +++++++++++ backend/app/derive.py | 21 +-- backend/app/export.py | 8 +- backend/app/main.py | 359 ++++++++++++++++++++++++++++++------ backend/data/rules.json | 12 -- docker-compose.yml | 12 +- frontend/src/Account.jsx | 34 ++++ frontend/src/App.jsx | 43 ++++- frontend/src/Characters.jsx | 123 ++++++++---- frontend/src/Creator.jsx | 140 +++++++------- frontend/src/Login.jsx | 53 ++++++ frontend/src/Presets.jsx | 23 +-- frontend/src/SheetPanel.jsx | 2 +- frontend/src/calc.js | 21 ++- frontend/src/legacy.js | 16 ++ frontend/src/main.jsx | 9 + frontend/src/sheetModel.js | 5 +- frontend/src/styles.css | 15 ++ 27 files changed, 857 insertions(+), 244 deletions(-) create mode 100644 .env.example delete mode 100644 _to_delete/awcc5.tgz delete mode 100644 _to_delete/awcc6.tgz delete mode 100644 _to_delete/awcc7.tgz delete mode 100644 _to_delete/awcc8.tgz delete mode 100644 _to_delete/awcc9.tgz create mode 100644 backend/app/admin.py create mode 100644 backend/app/auth.py create mode 100644 frontend/src/Account.jsx create mode 100644 frontend/src/Login.jsx create mode 100644 frontend/src/legacy.js diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..d523c9a --- /dev/null +++ b/.env.example @@ -0,0 +1,5 @@ +# Copy this file to ".env" (it is ignored by git) and fill it in. +# The code people must enter to create an account: +AW_REGISTRATION_CODE= +# 1 when running behind a reverse proxy that sets X-Forwarded-For / X-Forwarded-Proto / X-Forwarded-Host: +AW_TRUST_PROXY=0 diff --git a/.gitignore b/.gitignore index 5d96cac..a170dba 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ backend/__pycache__/ backend/app/__pycache__/ backend/aw.db db/ +.env +_to_delete/ diff --git a/README.md b/README.md index 08cae7a..fafa75c 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,29 @@ Website for creating characters for the Arcane Wasteland TTRPG, with a searchabl docker compose up -d --build ``` -Then open `http://:8080`. Characters are stored in `./db/aw.db`. For HTTPS and a domain, put the container behind a reverse proxy (nginx, Caddy, Traefik). +Then open `http://:8080`. Users, characters and presets are stored in `./db/aw.db`. + +### Login and accounts + +Everything (the whole API, rules, characters) is behind a login. The only public things are the login page itself and the app's JavaScript. + +1. Copy `.env.example` to `.env` and set `AW_REGISTRATION_CODE`. People need this code **once** to create an account; with an empty code registration is disabled. +2. Open the site, choose "Create account", enter a username, a password (min. 8 characters) and the registration code. +3. Sessions last 30 days (HttpOnly cookie, stored server-side). Logging out or changing the password ends them. + +Wrong logins and wrong registration codes are throttled (10 failures per address, 8 per username, 5 wrong codes per address and 30 per hour for the whole server), so a short code is not trivially guessable, but a long one is still better. Passwords are stored as scrypt hashes. + +**HTTPS is a must when the site is reachable from the internet**, otherwise passwords travel in plain text. Put the container behind a reverse proxy (Caddy, nginx, Traefik) that terminates TLS, pass the `Host` header through, and set `AW_TRUST_PROXY=1` in `.env` so the app sees the real client address and marks the cookie `Secure`. + +Admin tasks (list users, reset a password, delete a user): + +```bash +docker compose exec awcc python -m app.admin list +docker compose exec awcc python -m app.admin passwd +docker compose exec awcc python -m app.admin delete +``` + +Characters and presets made before accounts existed are adopted automatically by the account that logs in from the same browser (the old secret keys are used once and then removed). ## Edit the rules @@ -36,7 +58,7 @@ In the creator, the Concept page only has a "Rules preset" selector. Presets are ### Equipment -`equipment` lists every item with `id`, `name`, `cat` (category), `stat` (damage / armor / type), `kg` and `note`. The starting-kit rules are in `creation.kit` (allowed weapon categories, armor tiers, number of resources). Weights are approximate; for ranges in the source document the upper value is used. +`equipment` lists every item with `id`, `name`, `cat` (category), `stat` (damage / armor / type), `kg` and `note`. There are no starting-kit rules: players pick any items (with an amount) on the Equipment page and the total weight is checked against the carry capacity. Weights are approximate; for ranges in the source document the upper value is used. ## Development @@ -51,9 +73,7 @@ cd frontend && npm install && npm run dev ## Saving and sharing -There are no user accounts. When saved, a character gets an ID and a secret write key that stays in the browser ("My characters" page). The link `/#creator/` lets others view the character; only the holder of the key can change it. To move to another browser use the JSON backup (Summary page: "JSON backup" and "Import JSON"). - -If the site is reachable from the internet, protect it with Basic Auth at the reverse proxy. +Characters are saved in your account ("My characters" page). Only the owner can see a character, change it or delete it. On "My characters" the **Share** button lets you add usernames (e.g. your DM): they get read-only access, see the character under "Shared with me" and can open it through `/#creator/`. Saving a viewed character creates their own copy. Use the JSON backup (Summary page) to move a character between servers. While creating, the full character sheet stays visible next to the wizard. Edits are shown as a difference (old → new, added / removed items) until you press **Apply** (or **Apply & next**); **Discard** drops them. @@ -61,12 +81,17 @@ Each wizard page has a **Reset this page** button that clears only that page's d ## API +All `/api/*` routes except `/api/auth/me`, `/api/auth/register` and `/api/auth/login` need the session cookie. + | Method | Path | Purpose | |---|---|---| -| GET | `/api/rules` | Rule data | -| POST | `/api/characters` | Create a character, returns `id` and `token` | -| GET | `/api/characters/{id}` | Read a character | -| PUT / DELETE | `/api/characters/{id}` | Change / delete, header `X-Edit-Token` | -| POST | `/api/presets` | Create a preset, returns `id` and `token` | -| PUT / DELETE | `/api/presets/{id}` | Change / delete, header `X-Edit-Token` | +| GET | `/api/auth/me` | Current user (or `null`) | +| POST | `/api/auth/register` / `login` / `logout` / `password` | Accounts | +| GET | `/api/rules` | Rule data including presets | +| GET / POST | `/api/characters` | Own and shared-with-me characters / create one | +| GET | `/api/characters/{id}` | Read (owner or shared users) | +| POST / DELETE | `/api/characters/{id}/shares[/{username}]` | Share / unshare (owner only) | +| PUT / DELETE | `/api/characters/{id}` | Change / delete (owner only) | +| POST | `/api/presets` | Create a preset | +| PUT / DELETE | `/api/presets/{id}` | Change / delete (owner only) | | POST | `/api/export/pdf` or `/docx` | Character JSON in the body, file in the response | diff --git a/_to_delete/awcc5.tgz b/_to_delete/awcc5.tgz deleted file mode 100644 index bcb076d88aeb5d02044fd10e05b15bb96ecb3826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32694 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 diff --git a/_to_delete/awcc6.tgz b/_to_delete/awcc6.tgz deleted file mode 100644 index d4e3af6b65fde258883f6c2ee5bc066082bdef07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35140 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 KQ@HH_NCN=xw`{Ng diff --git a/_to_delete/awcc8.tgz b/_to_delete/awcc8.tgz deleted file mode 100644 index 38e71e92154fc66a958c8debc16095077ae52206..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53356 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 P_V@n)`!Kfh0B{2U**ZXe diff --git a/backend/app/admin.py b/backend/app/admin.py new file mode 100644 index 0000000..545841b --- /dev/null +++ b/backend/app/admin.py @@ -0,0 +1,45 @@ +"""Small admin CLI: python -m app.admin list | passwd | delete """ +import getpass +import sys + +from . import auth +from .main import db + + +def main(argv): + if not argv: + print(__doc__) + return 1 + cmd = argv[0] + with db() as con: + if cmd == "list": + for r in con.execute("SELECT username, created FROM users ORDER BY id"): + print(r["username"]) + elif cmd == "passwd" and len(argv) == 2: + pw = getpass.getpass("New password: ") + if len(pw) < auth.MIN_PASSWORD: + print(f"Password must have at least {auth.MIN_PASSWORD} characters.") + return 1 + cur = con.execute("UPDATE users SET pw_hash=? WHERE username=?", (auth.hash_password(pw), argv[1])) + if not cur.rowcount: + print("No such user.") + return 1 + con.execute("DELETE FROM sessions WHERE user_id=(SELECT id FROM users WHERE username=?)", (argv[1],)) + print("Password changed, user logged out everywhere.") + elif cmd == "delete" and len(argv) == 2: + row = con.execute("SELECT id FROM users WHERE username=?", (argv[1],)).fetchone() + if not row: + print("No such user.") + return 1 + con.execute("DELETE FROM sessions WHERE user_id=?", (row["id"],)) + con.execute("DELETE FROM shares WHERE user_id=?", (row["id"],)) + con.execute("DELETE FROM users WHERE id=?", (row["id"],)) + print("User deleted. Their characters and presets stay on the server without an owner.") + else: + print(__doc__) + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main(sys.argv[1:])) diff --git a/backend/app/auth.py b/backend/app/auth.py new file mode 100644 index 0000000..f43ce0d --- /dev/null +++ b/backend/app/auth.py @@ -0,0 +1,106 @@ +"""Accounts, sessions and brute-force protection (standard library only).""" +import hashlib +import hmac +import os +import re +import secrets +import sqlite3 +import threading +import time + +SESSION_COOKIE = "aw_session" +SESSION_DAYS = 30 +USERNAME_RE = re.compile(r"^[A-Za-z0-9_.-]{3,32}$") +MIN_PASSWORD = 8 +MAX_PASSWORD = 200 + +# scrypt parameters (about 16 MB of memory per hash) +_N, _R, _P = 2 ** 14, 8, 1 + + +def hash_password(password: str) -> str: + salt = secrets.token_bytes(16) + h = hashlib.scrypt(password.encode(), salt=salt, n=_N, r=_R, p=_P, dklen=32) + return f"scrypt${_N}${_R}${_P}${salt.hex()}${h.hex()}" + + +def verify_password(password: str, stored: str) -> bool: + try: + _, n, r, p, salt, h = stored.split("$") + calc = hashlib.scrypt(password.encode(), salt=bytes.fromhex(salt), n=int(n), r=int(r), p=int(p), dklen=32) + return hmac.compare_digest(calc.hex(), h) + except Exception: + return False + + +_DUMMY = hash_password("dummy-password-for-timing") + + +def init_tables(con: sqlite3.Connection) -> None: + con.execute("""CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE COLLATE NOCASE, + pw_hash TEXT NOT NULL, created REAL NOT NULL)""") + con.execute("""CREATE TABLE IF NOT EXISTS sessions ( + token_hash TEXT PRIMARY KEY, user_id INTEGER NOT NULL, expires REAL NOT NULL)""") + + +def _hash_token(token: str) -> str: + return hashlib.sha256(token.encode()).hexdigest() + + +def create_session(con: sqlite3.Connection, user_id: int) -> str: + token = secrets.token_urlsafe(32) + con.execute("DELETE FROM sessions WHERE expires < ?", (time.time(),)) + con.execute("INSERT INTO sessions VALUES (?,?,?)", (_hash_token(token), user_id, time.time() + SESSION_DAYS * 86400)) + return token + + +def user_for_token(con: sqlite3.Connection, token: str | None): + if not token: + return None + row = con.execute( + "SELECT u.id, u.username, s.expires FROM sessions s JOIN users u ON u.id = s.user_id WHERE s.token_hash = ?", + (_hash_token(token),)).fetchone() + if not row or row["expires"] < time.time(): + return None + return {"id": row["id"], "username": row["username"]} + + +def end_session(con: sqlite3.Connection, token: str | None) -> None: + if token: + con.execute("DELETE FROM sessions WHERE token_hash = ?", (_hash_token(token),)) + + +def timing_dummy(password: str) -> None: + """Burn the same time as a real check when the user does not exist.""" + verify_password(password, _DUMMY) + + +class Limiter: + """In-memory failure counter: too many failures within the window block further attempts.""" + + def __init__(self): + self.lock = threading.Lock() + self.hits: dict[str, list[float]] = {} + + def blocked(self, key: str, limit: int, window: int) -> int: + """Returns seconds to wait (0 = allowed).""" + now = time.time() + with self.lock: + xs = [t for t in self.hits.get(key, []) if now - t < window] + self.hits[key] = xs + return int(window - (now - xs[0])) + 1 if len(xs) >= limit else 0 + + def fail(self, key: str) -> None: + with self.lock: + self.hits.setdefault(key, []).append(time.time()) + if len(self.hits) > 20000: # keep memory bounded + self.hits.clear() + + def reset(self, key: str) -> None: + with self.lock: + self.hits.pop(key, None) + + +def registration_code() -> str: + return os.environ.get("AW_REGISTRATION_CODE", "") diff --git a/backend/app/derive.py b/backend/app/derive.py index f7527c3..9faa5b4 100644 --- a/backend/app/derive.py +++ b/backend/app/derive.py @@ -2,20 +2,17 @@ def kit_items(ch: dict, rules: dict) -> list: - """Returns [(label, item, qty)] for the starting kit and extra items.""" + """Returns [(category, item, qty)] for the carried items. Old starting-kit slots count as one item each.""" items = {e["id"]: e for e in rules.get("equipment", [])} + cats = {c["id"]: c["name"] for c in rules.get("equipment_categories", [])} kit = ch.get("kit") or {} - out = [] - for label, key in (("Weapon", "weapon"), ("Armor", "armor"), ("Tool", "tool")): - if kit.get(key) in items: - out.append((label, items[kit[key]], 1)) - for rid in kit.get("resources", []): - if rid in items: - out.append(("Resource", items[rid], 1)) - for iid, qty in (kit.get("extras") or {}).items(): - if iid in items and int(qty) > 0: - out.append(("Extra", items[iid], int(qty))) - return out + qty: dict = {} + for iid in [kit.get("weapon"), kit.get("armor"), kit.get("tool"), *(kit.get("resources") or [])]: + if iid: + qty[iid] = qty.get(iid, 0) + 1 + for iid, n in (kit.get("extras") or {}).items(): + qty[iid] = qty.get(iid, 0) + int(n) + return [(cats.get(items[i]["cat"], ""), items[i], n) for i, n in qty.items() if i in items and n > 0] def compute(ch: dict, rules: dict) -> dict: diff --git a/backend/app/export.py b/backend/app/export.py index de9dd98..e037551 100644 --- a/backend/app/export.py +++ b/backend/app/export.py @@ -40,8 +40,8 @@ def _sheet(ch: dict, rules: dict) -> dict: "derived_rows": [[d["name"], str(c["derived"][d["id"]])] for d in rules["derived"]], "skill_rows": [ [s["name"], "/".join(a["short"] for a in rules["attributes"] if a["id"] in s["attrs"]), - str(s["points"]), {0: "", 1: "Proficient", 2: "Expertise"}.get(s["pips"], ""), str(s["total"])] - for s in c["skills"] if s["points"] or s["prof"] or (s["unlocked"] and s["type"] == "advanced") + str(s["points"]), {1: "Proficient", 2: "Expertise"}.get(s["pips"]) or ("" if s["usable"] else "Locked"), str(s["total"])] + for s in c["skills"] ], "augment_rows": [[a["name"], KIND.get(a["kind"], a["kind"]), SOURCE.get(a["source"]) or "-", str(a["cost"])] for a in c["augments"]], @@ -92,7 +92,7 @@ def to_docx(ch: dict, rules: dict) -> bytes: doc.add_paragraph("-") doc.add_heading(f"Equipment (carried {c['weight']} / {c['carry_max']} kg)", 1) if s["gear_rows"]: - table(["", "Item", "Damage / Armor / Type", "Weight"], s["gear_rows"]) + table(["Category", "Item", "Damage / Armor / Type", "Weight"], s["gear_rows"]) else: doc.add_paragraph("-") if s["other"]: @@ -166,7 +166,7 @@ def to_pdf(ch: dict, rules: dict) -> bytes: el.append(Paragraph(f"Equipment (carried {c['weight']} / {c['carry_max']} kg)", h2)) if s["gear_rows"]: - el.append(tbl(["", "Item", "Damage / Armor / Type", "Weight"], s["gear_rows"], [22 * mm, 65 * mm, 55 * mm, 22 * mm])) + el.append(tbl(["Category", "Item", "Damage / Armor / Type", "Weight"], s["gear_rows"], [30 * mm, 60 * mm, 50 * mm, 22 * mm])) else: el.append(Paragraph("-", body)) if s["other"]: diff --git a/backend/app/main.py b/backend/app/main.py index 514d069..65dcb7e 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -7,10 +7,11 @@ import time import uuid from pathlib import Path -from fastapi import Body, FastAPI, Header, HTTPException, Response -from fastapi.responses import FileResponse +from fastapi import APIRouter, Body, Depends, FastAPI, HTTPException, Request, Response +from fastapi.responses import FileResponse, JSONResponse from fastapi.staticfiles import StaticFiles +from . import auth from .export import to_docx, to_pdf BASE = Path(__file__).resolve().parent.parent @@ -19,8 +20,14 @@ DB_PATH = os.environ.get("AW_DB", str(BASE / "aw.db")) STATIC = Path(os.environ.get("AW_STATIC", BASE / "static")) MAX_BODY = 200_000 # bytes per character MAX_PRESETS = 200 +MAX_CHARACTERS = 300 # per user +MAX_SHARES = 30 # per character + +# No public API docs: everything about the API stays behind the login +app = FastAPI(title="Arcane Wasteland Character Creator", docs_url=None, redoc_url=None, openapi_url=None) +limiter = auth.Limiter() +TRUST_PROXY = os.environ.get("AW_TRUST_PROXY", "") == "1" # behind a reverse proxy that sets X-Forwarded-For / -Proto -app = FastAPI(title="Arcane Wasteland Character Creator") def load_rules() -> dict: @@ -38,19 +45,28 @@ def db() -> sqlite3.Connection: con.execute("""CREATE TABLE IF NOT EXISTS presets ( id TEXT PRIMARY KEY, token TEXT NOT NULL, data TEXT NOT NULL, created REAL NOT NULL, updated REAL NOT NULL)""") + auth.init_tables(con) + con.execute("""CREATE TABLE IF NOT EXISTS shares ( + character_id TEXT NOT NULL, user_id INTEGER NOT NULL, PRIMARY KEY (character_id, user_id))""") + for table in ("characters", "presets"): # older databases: add the owner column + if "owner_id" not in [r["name"] for r in con.execute(f"PRAGMA table_info({table})")]: + con.execute(f"ALTER TABLE {table} ADD COLUMN owner_id INTEGER") return con -def custom_presets() -> list: - with db() as con: - rows = con.execute("SELECT id, data FROM presets ORDER BY created").fetchall() - return [{"id": r["id"], **json.loads(r["data"]), "custom": True} for r in rows] +def custom_presets(con, uid=None) -> list: + rows = con.execute("""SELECT p.id, p.data, p.owner_id, u.username FROM presets p + LEFT JOIN users u ON u.id = p.owner_id ORDER BY p.created""").fetchall() + return [{"id": r["id"], **json.loads(r["data"]), "custom": True, "author": r["username"] or "", + "mine": uid is not None and r["owner_id"] == uid} for r in rows] -def all_rules() -> dict: +def all_rules(uid=None) -> dict: """Rules from rules.json plus the presets created in the app.""" r = load_rules() - r["presets"] = [{**p, "builtin": True} for p in r.get("presets", [])] + custom_presets() + with db() as con: + custom = custom_presets(con, uid) + r["presets"] = [{**p, "builtin": True} for p in r.get("presets", [])] + custom return r @@ -76,99 +92,321 @@ def check_size(ch: dict): raise HTTPException(413, "Character too large") -@app.get("/api/rules") -def get_rules(): - return all_rules() +# ---------------------------------------------------------------- security + +def client_ip(request: Request) -> str: + if TRUST_PROXY: + fwd = request.headers.get("x-forwarded-for", "") + if fwd: + return fwd.split(",")[-1].strip() # the address the reverse proxy saw + return request.client.host if request.client else "?" -@app.post("/api/presets") -def create_preset(body: dict = Body(...)): +def is_https(request: Request) -> bool: + if TRUST_PROXY: + return request.headers.get("x-forwarded-proto", "") == "https" + return request.url.scheme == "https" + + +@app.middleware("http") +async def security(request: Request, call_next): + # Block cross-site writes (cookies are SameSite=Lax as well) + if request.method not in ("GET", "HEAD", "OPTIONS"): + origin = request.headers.get("origin") + hosts = {request.headers.get("host", "")} + if TRUST_PROXY: + hosts.add(request.headers.get("x-forwarded-host", "")) + if origin and origin.split("://", 1)[-1] not in hosts: + return JSONResponse({"detail": "Cross-site request refused"}, status_code=403) + resp = await call_next(request) + resp.headers["X-Content-Type-Options"] = "nosniff" + resp.headers["X-Frame-Options"] = "DENY" + resp.headers["Referrer-Policy"] = "same-origin" + resp.headers["Content-Security-Policy"] = ("default-src 'self'; style-src 'self' 'unsafe-inline'; " + "img-src 'self' data:; frame-ancestors 'none'") + if request.url.path.startswith("/api/"): + resp.headers["Cache-Control"] = "no-store" + return resp + + +def current_user(request: Request) -> dict: + with db() as con: + user = auth.user_for_token(con, request.cookies.get(auth.SESSION_COOKIE)) + if not user: + raise HTTPException(401, "Not logged in") + return user + + +def set_cookie(request: Request, resp: Response, token: str): + resp.set_cookie(auth.SESSION_COOKIE, token, max_age=auth.SESSION_DAYS * 86400, httponly=True, + samesite="lax", secure=is_https(request), path="/") + + +def throttle(key: str, limit: int, window: int): + wait = limiter.blocked(key, limit, window) + if wait: + raise HTTPException(429, f"Too many attempts. Try again in {wait // 60 + 1} minute(s).", + headers={"Retry-After": str(wait)}) + + +def check_password_rules(pw: str): + if not isinstance(pw, str) or len(pw) < auth.MIN_PASSWORD: + raise HTTPException(422, f"The password needs at least {auth.MIN_PASSWORD} characters") + if len(pw) > auth.MAX_PASSWORD: + raise HTTPException(422, "The password is too long") + + +# ---------------------------------------------------------------- auth routes (public) + +@app.get("/api/auth/me") +def me(request: Request): + with db() as con: + user = auth.user_for_token(con, request.cookies.get(auth.SESSION_COOKIE)) + return {"user": user, "registration_open": bool(auth.registration_code())} + + +@app.post("/api/auth/register") +def register(request: Request, response: Response, body: dict = Body(...)): + code_cfg = auth.registration_code() + if not code_cfg: + raise HTTPException(403, "Registration is disabled on this server") + ip = client_ip(request) + # The shared code may be weak, so wrong guesses are throttled per address and for the whole server. + throttle(f"reg:{ip}", 5, 900) + throttle("reg:all", 30, 3600) + username, password, code = str(body.get("username", "")).strip(), body.get("password", ""), str(body.get("code", "")) + if not secrets.compare_digest(code.encode(), code_cfg.encode()): + limiter.fail(f"reg:{ip}"); limiter.fail("reg:all") + raise HTTPException(403, "Wrong registration code") + if not auth.USERNAME_RE.match(username): + raise HTTPException(422, "Username: 3-32 characters, letters, digits and . _ - only") + check_password_rules(password) + with db() as con: + if con.execute("SELECT 1 FROM users WHERE username=?", (username,)).fetchone(): + raise HTTPException(409, "This username is taken") + cur = con.execute("INSERT INTO users (username, pw_hash, created) VALUES (?,?,?)", + (username, auth.hash_password(password), time.time())) + token = auth.create_session(con, cur.lastrowid) + set_cookie(request, response, token) + return {"user": {"id": cur.lastrowid, "username": username}} + + +@app.post("/api/auth/login") +def login(request: Request, response: Response, body: dict = Body(...)): + username, password = str(body.get("username", "")).strip(), str(body.get("password", ""))[:auth.MAX_PASSWORD] + ip = client_ip(request) + keys = (f"login:{ip}", f"login:u:{username.lower()}") + throttle(keys[0], 10, 600) + throttle(keys[1], 8, 600) + with db() as con: + row = con.execute("SELECT id, username, pw_hash FROM users WHERE username=?", (username,)).fetchone() + ok = bool(row) and auth.verify_password(password, row["pw_hash"]) + if not row: + auth.timing_dummy(password) + if not ok: + for k in keys: + limiter.fail(k) + raise HTTPException(401, "Wrong username or password") + token = auth.create_session(con, row["id"]) + limiter.reset(keys[1]) + set_cookie(request, response, token) + return {"user": {"id": row["id"], "username": row["username"]}} + + +@app.post("/api/auth/logout") +def logout(request: Request, response: Response): + with db() as con: + auth.end_session(con, request.cookies.get(auth.SESSION_COOKIE)) + response.delete_cookie(auth.SESSION_COOKIE, path="/") + return {"ok": True} + + +# ---------------------------------------------------------------- everything below needs a login + +api = APIRouter(prefix="/api", dependencies=[Depends(current_user)]) + + +@api.post("/auth/password") +def change_password(request: Request, response: Response, body: dict = Body(...), user: dict = Depends(current_user)): + throttle(f"pw:{user['id']}", 8, 600) + old, new = str(body.get("old", "")), body.get("new", "") + check_password_rules(new) + with db() as con: + row = con.execute("SELECT pw_hash FROM users WHERE id=?", (user["id"],)).fetchone() + if not auth.verify_password(old, row["pw_hash"]): + limiter.fail(f"pw:{user['id']}") + raise HTTPException(403, "The current password is wrong") + con.execute("UPDATE users SET pw_hash=? WHERE id=?", (auth.hash_password(new), user["id"])) + con.execute("DELETE FROM sessions WHERE user_id=?", (user["id"],)) # log out all other devices + token = auth.create_session(con, user["id"]) + set_cookie(request, response, token) + return {"ok": True} + + +@api.get("/rules") +def get_rules(user: dict = Depends(current_user)): + return all_rules(user["id"]) + + +# ---- presets + +def _owned(con, table: str, rid: str, user: dict): + row = con.execute(f"SELECT owner_id FROM {table} WHERE id=?", (rid,)).fetchone() + if not row: + raise HTTPException(404, "Not found") + if row["owner_id"] != user["id"]: + raise HTTPException(403, "This belongs to another user") + + +@api.post("/presets") +def create_preset(body: dict = Body(...), user: dict = Depends(current_user)): data = clean_preset(body, load_rules()) with db() as con: if con.execute("SELECT COUNT(*) FROM presets").fetchone()[0] >= MAX_PRESETS: raise HTTPException(409, "Too many presets on this server") - pid, token, now = "u-" + uuid.uuid4().hex[:8], secrets.token_urlsafe(16), time.time() - con.execute("INSERT INTO presets VALUES (?,?,?,?,?)", (pid, token, json.dumps(data), now, now)) - return {"id": pid, "token": token} + pid, now = "u-" + uuid.uuid4().hex[:8], time.time() + con.execute("INSERT INTO presets (id, token, data, created, updated, owner_id) VALUES (?,?,?,?,?,?)", + (pid, "", json.dumps(data), now, now, user["id"])) + return {"id": pid} -@app.put("/api/presets/{pid}") -def update_preset(pid: str, body: dict = Body(...), x_edit_token: str = Header(default="")): +@api.put("/presets/{pid}") +def update_preset(pid: str, body: dict = Body(...), user: dict = Depends(current_user)): data = clean_preset(body, load_rules()) with db() as con: - row = con.execute("SELECT token FROM presets WHERE id=?", (pid,)).fetchone() - if not row: - raise HTTPException(404, "Preset not found") - if not secrets.compare_digest(row["token"], x_edit_token): - raise HTTPException(403, "No write access to this preset") + _owned(con, "presets", pid, user) con.execute("UPDATE presets SET data=?, updated=? WHERE id=?", (json.dumps(data), time.time(), pid)) return {"ok": True} -@app.delete("/api/presets/{pid}") -def delete_preset(pid: str, x_edit_token: str = Header(default="")): +@api.delete("/presets/{pid}") +def delete_preset(pid: str, user: dict = Depends(current_user)): with db() as con: - row = con.execute("SELECT token FROM presets WHERE id=?", (pid,)).fetchone() - if not row: - raise HTTPException(404, "Preset not found") - if not secrets.compare_digest(row["token"], x_edit_token): - raise HTTPException(403, "No write access to this preset") + _owned(con, "presets", pid, user) con.execute("DELETE FROM presets WHERE id=?", (pid,)) return {"ok": True} -@app.post("/api/characters") -def create_character(ch: dict = Body(...)): +# ---- characters (any logged-in user can open a shared link, only the owner can change or delete) + +def _name(data: str) -> str: + return json.loads(data).get("name") or "Nameless" + + +@api.get("/characters") +def my_characters(user: dict = Depends(current_user)): + with db() as con: + rows = con.execute("SELECT id, data, updated FROM characters WHERE owner_id=? ORDER BY updated DESC", + (user["id"],)).fetchall() + shares: dict = {} + for r in con.execute("""SELECT s.character_id, u.username FROM shares s JOIN users u ON u.id = s.user_id + JOIN characters c ON c.id = s.character_id WHERE c.owner_id=? ORDER BY u.username""", + (user["id"],)): + shares.setdefault(r["character_id"], []).append(r["username"]) + shared = con.execute("""SELECT c.id, c.data, c.updated, o.username AS owner FROM shares s + JOIN characters c ON c.id = s.character_id LEFT JOIN users o ON o.id = c.owner_id + WHERE s.user_id=? ORDER BY c.updated DESC""", (user["id"],)).fetchall() + return {"mine": [{"id": r["id"], "name": _name(r["data"]), "updated": r["updated"], "shared_with": shares.get(r["id"], [])} + for r in rows], + "shared": [{"id": r["id"], "name": _name(r["data"]), "updated": r["updated"], "owner": r["owner"] or "?"} + for r in shared]} + + +@api.post("/characters") +def create_character(ch: dict = Body(...), user: dict = Depends(current_user)): check_size(ch) - cid, token, now = uuid.uuid4().hex[:12], secrets.token_urlsafe(16), time.time() with db() as con: - con.execute("INSERT INTO characters VALUES (?,?,?,?,?)", (cid, token, json.dumps(ch), now, now)) - return {"id": cid, "token": token} + if con.execute("SELECT COUNT(*) FROM characters WHERE owner_id=?", (user["id"],)).fetchone()[0] >= MAX_CHARACTERS: + raise HTTPException(409, "Character limit reached") + cid, now = uuid.uuid4().hex[:12], time.time() + con.execute("INSERT INTO characters (id, token, data, created, updated, owner_id) VALUES (?,?,?,?,?,?)", + (cid, "", json.dumps(ch), now, now, user["id"])) + return {"id": cid} -@app.get("/api/characters/{cid}") -def read_character(cid: str): +@api.get("/characters/{cid}") +def read_character(cid: str, user: dict = Depends(current_user)): + """Only the owner and the users the character is shared with may read it.""" with db() as con: - row = con.execute("SELECT data FROM characters WHERE id=?", (cid,)).fetchone() - if not row: + row = con.execute("SELECT data, owner_id FROM characters WHERE id=?", (cid,)).fetchone() + allowed = bool(row) and (row["owner_id"] == user["id"] or con.execute( + "SELECT 1 FROM shares WHERE character_id=? AND user_id=?", (cid, user["id"])).fetchone()) + if not allowed: raise HTTPException(404, "Character not found") return json.loads(row["data"]) -@app.put("/api/characters/{cid}") -def update_character(cid: str, ch: dict = Body(...), x_edit_token: str = Header(default="")): +@api.post("/characters/{cid}/shares") +def add_share(cid: str, body: dict = Body(...), user: dict = Depends(current_user)): + name = str(body.get("username", "")).strip() + with db() as con: + _owned(con, "characters", cid, user) + target = con.execute("SELECT id, username FROM users WHERE username=?", (name,)).fetchone() + if not target: + raise HTTPException(404, "No user with this name") + if target["id"] == user["id"]: + raise HTTPException(422, "This is your own character") + if con.execute("SELECT COUNT(*) FROM shares WHERE character_id=?", (cid,)).fetchone()[0] >= MAX_SHARES: + raise HTTPException(409, "Shared with too many users") + con.execute("INSERT OR IGNORE INTO shares VALUES (?,?)", (cid, target["id"])) + return {"username": target["username"]} + + +@api.delete("/characters/{cid}/shares/{username}") +def remove_share(cid: str, username: str, user: dict = Depends(current_user)): + with db() as con: + _owned(con, "characters", cid, user) + con.execute("DELETE FROM shares WHERE character_id=? AND user_id=(SELECT id FROM users WHERE username=?)", + (cid, username)) + return {"ok": True} + + +@api.put("/characters/{cid}") +def update_character(cid: str, ch: dict = Body(...), user: dict = Depends(current_user)): check_size(ch) with db() as con: - row = con.execute("SELECT token FROM characters WHERE id=?", (cid,)).fetchone() - if not row: - raise HTTPException(404, "Character not found") - if not secrets.compare_digest(row["token"], x_edit_token): - raise HTTPException(403, "No write access to this character") + _owned(con, "characters", cid, user) con.execute("UPDATE characters SET data=?, updated=? WHERE id=?", (json.dumps(ch), time.time(), cid)) return {"ok": True} -@app.delete("/api/characters/{cid}") -def delete_character(cid: str, x_edit_token: str = Header(default="")): +@api.delete("/characters/{cid}") +def delete_character(cid: str, user: dict = Depends(current_user)): with db() as con: - row = con.execute("SELECT token FROM characters WHERE id=?", (cid,)).fetchone() - if not row: - raise HTTPException(404, "Character not found") - if not secrets.compare_digest(row["token"], x_edit_token): - raise HTTPException(403, "No write access to this character") + _owned(con, "characters", cid, user) con.execute("DELETE FROM characters WHERE id=?", (cid,)) + con.execute("DELETE FROM shares WHERE character_id=?", (cid,)) return {"ok": True} +@api.post("/claim/{kind}/{rid}") +def claim(kind: str, rid: str, body: dict = Body(...), user: dict = Depends(current_user)): + """Takes over something created before accounts existed, using its old secret key.""" + table = {"characters": "characters", "presets": "presets"}.get(kind) + if not table: + raise HTTPException(404, "Unknown kind") + throttle(f"claim:{user['id']}", 60, 600) + with db() as con: + row = con.execute(f"SELECT token, owner_id FROM {table} WHERE id=?", (rid,)).fetchone() + key = str(body.get("token", "")) + if not row or row["owner_id"] is not None or not row["token"] or not secrets.compare_digest(row["token"], key): + limiter.fail(f"claim:{user['id']}") + raise HTTPException(404, "Nothing to claim") + con.execute(f"UPDATE {table} SET owner_id=?, token='' WHERE id=?", (user["id"], rid)) + return {"ok": True} + + +# ---- export + def _filename(ch: dict, ext: str) -> str: base = re.sub(r"[^A-Za-z0-9_-]+", "_", ch.get("name") or "Character").strip("_") or "Character" return f"{base}.{ext}" -@app.post("/api/export/{fmt}") -def export(fmt: str, ch: dict = Body(...)): +@api.post("/export/{fmt}") +def export(fmt: str, ch: dict = Body(...), user: dict = Depends(current_user)): check_size(ch) - rules = all_rules() + rules = all_rules(user["id"]) if fmt == "docx": data = to_docx(ch, rules) mime = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" @@ -181,12 +419,17 @@ def export(fmt: str, ch: dict = Body(...)): headers={"Content-Disposition": f'attachment; filename="{_filename(ch, fmt)}"'}) -# Serve the built frontend with an SPA fallback +app.include_router(api) + + +# Serve the built frontend with an SPA fallback (the app shell is public, all data is behind the API login) if STATIC.is_dir(): app.mount("/assets", StaticFiles(directory=STATIC / "assets"), name="assets") @app.get("/{path:path}") def spa(path: str): + if path.startswith("api/"): + raise HTTPException(404, "Not found") f = (STATIC / path).resolve() if path and f.is_file() and STATIC in f.parents: return FileResponse(f) diff --git a/backend/data/rules.json b/backend/data/rules.json index f45cabc..7530cf1 100644 --- a/backend/data/rules.json +++ b/backend/data/rules.json @@ -21,18 +21,6 @@ "talents_max": 2, "proficiency_bonus": 10, "expertise_bonus": 20, - "kit": { - "weapon_cats": [ - "melee", - "firearm" - ], - "armor_tiers": [ - "light" - ], - "resources_min": 1, - "resources_max": 2, - "tools": 1 - }, "carry_per_strength_mod": 10 }, diff --git a/docker-compose.yml b/docker-compose.yml index edb9dc2..16a1672 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,13 @@ services: build: . restart: unless-stopped ports: - - "8080:8000" # Host-Port bei Bedarf ändern, oder hinter einen Reverse Proxy hängen + - "8080:8000" # change the host port, or put the container behind a reverse proxy + environment: + # Code that new users must enter to create an account (set it in the .env file next to this file). + # Empty = registration is disabled. + AW_REGISTRATION_CODE: ${AW_REGISTRATION_CODE:-} + # Set to 1 when a reverse proxy (nginx, Caddy, Traefik) in front sets X-Forwarded-* headers. + AW_TRUST_PROXY: ${AW_TRUST_PROXY:-0} volumes: - - ./db:/db # SQLite-Datenbank (Charaktere) - - ./backend/data:/app/data:ro # rules.json: bearbeiten, Seite neu laden, fertig + - ./db:/db # SQLite database (users, characters, presets) + - ./backend/data:/app/data:ro # rules.json: edit, reload the page, done diff --git a/frontend/src/Account.jsx b/frontend/src/Account.jsx new file mode 100644 index 0000000..99fc72a --- /dev/null +++ b/frontend/src/Account.jsx @@ -0,0 +1,34 @@ +import { useState } from 'react' + +export default function Account({ user, onLogout }) { + const [f, setF] = useState({ old: '', new: '', new2: '' }) + const [msg, setMsg] = useState('') + const [err, setErr] = useState('') + const set = (k) => (e) => setF({ ...f, [k]: e.target.value }) + + const change = async (e) => { + e.preventDefault(); setMsg(''); setErr('') + if (f.new !== f.new2) return setErr('The two new passwords do not match.') + const r = await fetch('/api/auth/password', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ old: f.old, new: f.new }) }) + const data = await r.json().catch(() => ({})) + if (!r.ok) return setErr(typeof data.detail === 'string' ? data.detail : 'Could not change the password.') + setF({ old: '', new: '', new2: '' }); setMsg('Password changed. Other devices were logged out.') + } + + return ( +
+

Account

+

Logged in as {user}.

+
+

Change password

+ + + + {err &&

{err}

} + {msg &&

{msg}

} + +
+

+
+ ) +} diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index facb266..fe1648d 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -3,6 +3,9 @@ import Creator from './Creator.jsx' import Rules from './Rules.jsx' import Characters from './Characters.jsx' import Presets from './Presets.jsx' +import Login from './Login.jsx' +import Account from './Account.jsx' +import { claimLegacy } from './legacy.js' const useHash = () => { const [h, setH] = useState(window.location.hash.slice(1) || 'creator') @@ -16,16 +19,40 @@ const useHash = () => { export default function App() { const hash = useHash() + const [auth, setAuth] = useState(null) // null = checking, {user, registration_open} const [rules, setRules] = useState(null) const [error, setError] = useState('') // Used to load a saved character into the creator const [loadRequest, setLoadRequest] = useState(null) + const [charName, setCharName] = useState('') // name of the character being worked on, shown in the nav + // Ask the server who we are; any later 401 (session expired) sends us back to the login + useEffect(() => { + fetch('/api/auth/me').then((r) => r.json()).then(setAuth).catch(() => setError('Could not reach the server.')) + const out = () => { setAuth((a) => ({ user: null, registration_open: a?.registration_open })); setRules(null) } + window.addEventListener('aw-unauthorized', out) + return () => window.removeEventListener('aw-unauthorized', out) + }, []) + + const username = auth?.user?.username const loadRules = () => fetch('/api/rules').then((r) => r.json()).then(setRules).catch(() => setError('Could not load the rules.')) - useEffect(() => { loadRules() }, []) + useEffect(() => { + if (!username) return + claimLegacy().finally(loadRules) + }, [username]) // eslint-disable-line + + const logout = async () => { + await fetch('/api/auth/logout', { method: 'POST' }).catch(() => {}) + window.location.hash = 'creator' + setAuth({ user: null, registration_open: auth.registration_open }); setRules(null) + } + + if (error) return

{error}

+ if (!auth) return

Loading …

+ if (!auth.user) return
setAuth({ ...auth, user: u })} />
const page = hash.split('/')[0] - const nav = [['creator', 'Create character'], ['rules', 'Rules'], ['presets', 'Presets'], ['characters', 'My characters']] + const nav = [['creator', charName ? `Character: ${charName}` : 'Character'], ['rules', 'Rules'], ['presets', 'Presets'], ['characters', 'My characters']] return ( <> @@ -36,19 +63,21 @@ export default function App() {
- {error &&

{error}

} - {!rules && !error &&

Loading rules …

} - {rules && page === 'creator' && setLoadRequest(null)} />} + {!rules &&

Loading rules …

} + {rules && page === 'creator' && setLoadRequest(null)} onName={setCharName} />} {rules && page === 'rules' && } {rules && page === 'presets' && } {rules && page === 'characters' && ( - { setLoadRequest(entry); window.location.hash = 'creator' }} /> + { setLoadRequest(entry); window.location.hash = 'creator' }} + onNew={() => { setLoadRequest({ new: true }); window.location.hash = 'creator' }} /> )} + {page === 'account' && }
) diff --git a/frontend/src/Characters.jsx b/frontend/src/Characters.jsx index 6eb623f..a20b164 100644 --- a/frontend/src/Characters.jsx +++ b/frontend/src/Characters.jsx @@ -1,50 +1,105 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' -const KEY = 'aw_chars' -export const loadList = () => { - try { return JSON.parse(localStorage.getItem(KEY)) || [] } catch { return [] } -} -export const saveList = (l) => { - try { localStorage.setItem(KEY, JSON.stringify(l)) } catch { /* storage blocked */ } -} -export const rememberCharacter = (id, token, name) => { - const l = loadList().filter((c) => c.id !== id) - l.unshift({ id, token, name: name || 'Nameless', updated: Date.now() }) - saveList(l) -} +function SharePanel({ c, reload }) { + const [name, setName] = useState('') + const [err, setErr] = useState('') -export default function Characters({ onOpen }) { - const [list, setList] = useState(loadList) - - const remove = async (c) => { - if (!window.confirm(`Really delete "${c.name}"?`)) return - await fetch(`/api/characters/${c.id}`, { method: 'DELETE', headers: { 'X-Edit-Token': c.token } }).catch(() => {}) - const l = list.filter((x) => x.id !== c.id) - saveList(l); setList(l) + const add = async (e) => { + e.preventDefault(); setErr('') + if (!name.trim()) return + const r = await fetch(`/api/characters/${c.id}/shares`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username: name }) }) + const data = await r.json().catch(() => ({})) + if (!r.ok) return setErr(typeof data.detail === 'string' ? data.detail : 'Could not share.') + setName(''); reload() + } + const remove = async (u) => { + await fetch(`/api/characters/${c.id}/shares/${encodeURIComponent(u)}`, { method: 'DELETE' }).catch(() => {}) + reload() } + return ( +
+

These users can view this character (read-only), for example your DM:

+
+ {c.shared_with.length === 0 && Nobody yet.} + {c.shared_with.map((u) => ( + {u} + ))} +
+
+ setName(e.target.value)} placeholder="Username" aria-label="Username to share with" /> + +
+ {err &&

{err}

} +
+ ) +} + +export default function Characters({ onOpen, onNew }) { + const [data, setData] = useState(null) + const [open, setOpen] = useState(null) // id of the character whose share panel is open + const [err, setErr] = useState('') + + const load = () => fetch('/api/characters').then((r) => r.json()).then(setData).catch(() => setErr('Could not load your characters.')) + useEffect(() => { load() }, []) + + const remove = async (c) => { + if (!window.confirm(`Really delete "${c.name}"?`)) return + const r = await fetch(`/api/characters/${c.id}`, { method: 'DELETE' }).catch(() => null) + if (!r || !r.ok) return setErr('Deleting failed.') + load() + } + const when = (t) => new Date(t * 1000).toLocaleString('en-GB') + return (
-

My characters

+
+

My characters

+ +

- This list is stored in this browser. The characters themselves live on the server and can be shared by link - (#creator/<ID>), but only this browser holds the key needed to change them. + These characters are saved in your account. Only you and the users you share a character with can see it. + Shared users can look at it but not change it.

- {list.length === 0 &&

Nothing saved yet. Create a character and click "Save".

} + {err &&

{err}

} + {data && data.mine.length === 0 &&

Nothing saved yet. Use "New character", then click "Save" on the Summary page.

}
    - {list.map((c) => ( -
  • -
    - {c.name} -
    ID {c.id} · {new Date(c.updated).toLocaleString('en-GB')}
    -
    -
    - - + {(data?.mine || []).map((c) => ( +
  • +
    +
    + {c.name} +
    + ID {c.id} · {when(c.updated)}{c.shared_with.length > 0 && ` · shared with ${c.shared_with.join(', ')}`} +
    +
    +
    + + + +
    + {open === c.id && }
  • ))}
+ + {data && data.shared.length > 0 && ( + <> +

Shared with me

+
    + {data.shared.map((c) => ( +
  • +
    + {c.name} +
    from {c.owner} · {when(c.updated)}
    +
    +
    +
  • + ))} +
+ + )}
) } diff --git a/frontend/src/Creator.jsx b/frontend/src/Creator.jsx index 25fc960..f8b5850 100644 --- a/frontend/src/Creator.jsx +++ b/frontend/src/Creator.jsx @@ -1,26 +1,25 @@ import { useEffect, useMemo, useRef, useState } from 'react' import { applyPreset, applyProfession, compute, effectiveRules, emptyCharacter, kitItems, normalize, resetStep, setProfessionPicks } from './calc.js' -import { rememberCharacter } from './Characters.jsx' import SheetPanel from './SheetPanel.jsx' -const DRAFT = 'aw_draft' const STEPS = ['Concept', 'Attributes', 'Profession', 'Skills', 'Talents', 'Mutations', 'Equipment', 'Summary'] const SOURCE = { noxium: 'Noxium', diesium: 'Diesium', hybrid: 'Hybrid', precyber: 'Pre-meteor cybernetics' } const Badge = () => Placeholder -function readDraft() { - try { return JSON.parse(localStorage.getItem(DRAFT)) } catch { return null } +function readDraft(key) { + try { return JSON.parse(localStorage.getItem(key)) } catch { return null } } -export default function Creator({ rules: baseRules, loadRequest, clearLoad }) { +export default function Creator({ rules: baseRules, user, loadRequest, clearLoad, onName }) { + const DRAFT = `aw_draft:${user}` // drafts are kept per account const freshCharacter = () => applyPreset(emptyCharacter(baseRules), baseRules, baseRules.default_preset || 'standard') const [ch, setCh] = useState(() => { - const d = readDraft() + const d = readDraft(DRAFT) return d?.ch ? normalize(d.ch, baseRules) : freshCharacter() }) // `ch` is the working copy the pages edit; `committed` is the applied state shown as "before" in the side panel const [committed, setCommitted] = useState(() => { - const d = readDraft() + const d = readDraft(DRAFT) const src = d?.committed || d?.ch return src ? normalize(src, baseRules) : freshCharacter() }) @@ -28,7 +27,7 @@ export default function Creator({ rules: baseRules, loadRequest, clearLoad }) { const pending = JSON.stringify(ch) !== JSON.stringify(committed) const apply = () => setCommitted(ch) const discard = () => setCh(committed) - const [saved, setSaved] = useState(() => readDraft()?.saved || null) // {id, token} + const [saved, setSaved] = useState(() => readDraft(DRAFT)?.saved || null) // {id} const [step, setStep] = useState(0) const [msg, setMsg] = useState('') const fileRef = useRef(null) @@ -42,6 +41,8 @@ export default function Creator({ rules: baseRules, loadRequest, clearLoad }) { const set = (patch) => setCh((x) => ({ ...x, ...patch })) const cr = rules.creation + useEffect(() => { onName?.(ch.name) }, [ch.name]) // eslint-disable-line + // Keep the draft in this browser useEffect(() => { try { localStorage.setItem(DRAFT, JSON.stringify({ ch, committed, saved })) } catch { /* ignore */ } @@ -50,8 +51,17 @@ export default function Creator({ rules: baseRules, loadRequest, clearLoad }) { // Load a character picked in "My characters" useEffect(() => { if (!loadRequest) return + if (loadRequest.new) { // "New character" button on the My characters page + const untouched = JSON.stringify(ch) === JSON.stringify(freshCharacter()) && !saved + if (untouched || window.confirm('Start a new character? Your current draft is discarded unless you saved it.')) { + setBoth(freshCharacter()); setSaved(null); setStep(0) + } + clearLoad() + return + } fetch(`/api/characters/${loadRequest.id}`).then((r) => { if (!r.ok) throw new Error(); return r.json() }) - .then((data) => { setBoth(normalize(data, baseRules)); setSaved({ id: loadRequest.id, token: loadRequest.token }); setStep(7) }) + .then((data) => { setBoth(normalize(data, baseRules)); setSaved(loadRequest.owner ? null : { id: loadRequest.id }); setStep(7) + if (loadRequest.owner) setMsg(`This is ${loadRequest.owner}'s character. You can look at it; "Save" creates your own copy.`) }) .catch(() => setMsg('Could not load the character.')) .finally(clearLoad) }, [loadRequest]) // eslint-disable-line @@ -62,7 +72,7 @@ export default function Creator({ rules: baseRules, loadRequest, clearLoad }) { if (!id || loadRequest) return fetch(`/api/characters/${id}`).then((r) => { if (!r.ok) throw new Error(); return r.json() }) .then((data) => { setBoth(normalize(data, baseRules)); setSaved(null); setStep(7); setMsg('Shared character loaded. "Save" creates your own copy.') }) - .catch(() => setMsg('Shared character not found.')) + .catch(() => setMsg('Character not found, or it is not shared with you.')) }, []) // eslint-disable-line // Moving between pages: pending edits are applied first (Next applies silently, other jumps ask). @@ -89,15 +99,14 @@ export default function Creator({ rules: baseRules, loadRequest, clearLoad }) { const save = async () => { try { if (saved) { - const r = await fetch(`/api/characters/${saved.id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json', 'X-Edit-Token': saved.token }, body: JSON.stringify(ch) }) + const r = await fetch(`/api/characters/${saved.id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(ch) }) if (!r.ok) throw new Error() - rememberCharacter(saved.id, saved.token, ch.name) flash('Saved.') } else { const r = await fetch('/api/characters', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(ch) }) if (!r.ok) throw new Error() - const { id, token } = await r.json() - setSaved({ id, token }); rememberCharacter(id, token, ch.name) + const { id } = await r.json() + setSaved({ id }) flash('Saved. The share link is shown below.') } } catch { flash('Saving failed.') } @@ -357,69 +366,44 @@ export default function Creator({ rules: baseRules, loadRequest, clearLoad }) { ) // --- Equipment --- - const kitRule = cr.kit const items = rules.equipment const catName = (id) => rules.equipment_categories.find((x) => x.id === id).name - const setKit = (patch) => set({ kit: { ...ch.kit, ...patch } }) - const weaponItems = items.filter((e) => kitRule.weapon_cats.includes(e.cat)) - const armorItems = items.filter((e) => e.cat === 'armor' && kitRule.armor_tiers.includes(e.tier)) - const resourceItems = items.filter((e) => e.cat === 'resource') - const toolItems = items.filter((e) => e.cat === 'tool') - - const ItemCard = ({ e, on, onClick, disabled }) => ( - - ) - const SingleSlot = ({ title, list, slot }) => ( - <> -

{title}

-
{list.map((e) => ( - setKit({ [slot]: ch.kit[slot] === e.id ? '' : e.id })} /> - ))}
- - ) const setExtra = (id, qty) => { const extras = { ...ch.kit.extras } if (qty <= 0) delete extras[id]; else extras[id] = qty - setKit({ extras }) + set({ kit: { ...ch.kit, extras } }) } const overWeight = c.weight > c.carryMax const stepGear = ( <>

Equipment

-

Starting gear: one weapon (melee or firearm), light armor or clothing, {kitRule.resources_min}-{kitRule.resources_max} resources and one tool. Everything else can be added as extra items below.

+

Pick everything your character carries. Ask your GM what is allowed. Use + and − on a tile to change the amount.

Carried: {c.weight} / {c.carryMax} kg (Strength Mod x {cr.carry_per_strength_mod}){overWeight && ' – overloaded'}
- - -

Resources ({ch.kit.resources.length}/{kitRule.resources_max})

-
{resourceItems.map((e) => { - const on = ch.kit.resources.includes(e.id) - return = kitRule.resources_max} - onClick={() => setKit({ resources: on ? ch.kit.resources.filter((x) => x !== e.id) : [...ch.kit.resources, e.id] })} /> - })}
- - -

Extra items

-

Anything else from the document's item lists. Ask your GM what you may take along.

- {rules.equipment_categories.map((cat) => ( -
- {cat.name} ({items.filter((e) => e.cat === cat.id).reduce((n, e) => n + (ch.kit.extras[e.id] || 0), 0)} chosen) -
{items.filter((e) => e.cat === cat.id).map((e) => ( -
-
{e.name}
{e.stat}{e.tier ? ` (${e.tier})` : ''} · {e.kg} kg{e.note ? ` · ${e.note}` : ''}
-
- - {ch.kit.extras[e.id] || 0} - -
-
- ))}
-
- ))} + {rules.equipment_categories.map((cat) => { + const list = items.filter((e) => e.cat === cat.id) + const n = list.reduce((sum, e) => sum + (ch.kit.extras[e.id] || 0), 0) + return ( +
+

{cat.name} {n > 0 && ({n} chosen)}

+
{list.map((e) => { + const qty = ch.kit.extras[e.id] || 0 + return ( +
0 ? 'on' : ''}`}> + {e.name} + {e.stat}{e.tier ? ` (${e.tier})` : ''} · {e.kg} kg + {e.note && {e.note}} +
+ + {qty} + +
+
+ ) + })}
+
+ ) + })}