Commit Graph

72 Commits

Author SHA1 Message Date
f5dcf930fa feat(frontend): log in with Keycloak, as a guest or with an account
- First visit logs in as a new guest through Keycloak without a form;
  the session, including an offline refresh token, is kept in local storage
- Account menu on the home page: guests can log in or sign up, users can
  log out (which starts a new guest session)
- The WebSocket client in core authenticates with the access token after
  connecting, reports "connected" once the server accepts it, and re-sends
  renewed tokens on the open connection
- Game page shows player names; guests appear as "Guest 4F2A"
- Auth channels, AuthUser and player names in UserConnectionInfo move to
  core and the backend uses them from there
- Mobile keeps using userKey login for now
2026-10-14 02:22:13 +03:00
e165b0a0eb build: use local mancala.js and @mancala/core packages
- Apps and @mancala/core depend on the packages in this repo through
  link: dependencies instead of the npm releases, so changes no longer
  need a publish
- Root package.json gets a build:packages script that installs and
  builds both packages
- Backend and frontend Docker images are built from the repo root so
  they can include the packages; compose builds them that way
- Metro watches the packages folder and resolves their imports from the
  app's node_modules
2026-10-14 02:09:05 +03:00
30ad51c493 feat(backend): authenticate WebSocket clients with Keycloak tokens
- New auth module verifies Keycloak access tokens offline against the
  realm's signing keys (issuer, RS256, typ=Bearer, allowed azp); guests
  are recognised by the guest realm role
- Clients send an auth message after connecting and get on_auth or
  on_auth_error; unauthenticated sockets are closed after 5 seconds and
  their messages ignored; a socket can refresh its token but not switch user
- A user can be connected from several sockets; a late close of an old
  socket no longer drops the new one
- Malformed messages are ignored instead of throwing
- Games store player names and guest flags and send them with the
  connection info
- Legacy ?userKey= clients and /register stay available behind
  LEGACY_USERKEY_AUTH; legacy keys must be UUIDs so they cannot take a
  Keycloak user's kc: id
- TypeScript target raised to es2020 for async/await
2026-10-14 01:52:07 +03:00
7c99a76af7 feat(keycloak): add Keycloak with guest login extension
- Custom authenticator creates and logs in a guest user when the
  authorization request has guest=true; other requests get the login form
- Scheduled task removes guests with no remaining sessions
- Realm export with mancala-web PKCE client, guest role and guest-aware
  browser flow (verify profile disabled so guests are not asked for details)
- Dockerfile building the extension into a Keycloak 26.7.5 image
- Keycloak and Postgres in compose; nginx proxies auth.playmancala.app
  and rate limits the auth endpoint
- Integration tests run the extension and realm in a Keycloak container
2026-10-14 01:46:48 +03:00
69664796ce feat(mobile): implement "Rejoin Game" functionality and fix storage bugs 2026-07-16 02:00:25 +03:00
0be96a6229 fix: display stone count immediately on board pits 2026-07-04 11:54:31 +03:00
3efc7c5ffe fix(mobile): fix android build issue 2026-07-02 23:44:55 +03:00
9c95d9dc44 feat(mobile): display stone count in pit 2026-05-26 00:32:20 +03:00
ca92b20b59 feat(frontend): display stone count in pit 2026-05-26 00:31:59 +03:00
bb1c750080 feat(mobile): upgrade react native version
chore(mobile): update version to 0.5.0
2025-11-17 00:25:41 +03:00
230dd0ecff chore(frontend): upgrade uuid version 2024-12-22 02:02:44 +03:00
3f5db4be22 fix(frontend): update websocket server default address 2024-12-22 00:55:20 +03:00
47f56b8bda update compose.yaml 2024-12-22 00:49:30 +03:00
6d59c33300 [ci] trigger test1 2024-12-21 22:25:47 +03:00
9c42f867e9 v0.4.7 2024-12-08 23:26:17 +03:00
72aa95ca97 fix(mobile): update server address 2024-12-08 23:25:45 +03:00
5d4ce2799c fix(frontend): env variable 2024-12-08 23:24:22 +03:00
0c96056f84 v0.4.6 2024-12-08 22:49:21 +03:00
313dd3d549 feat: add docker compose 2024-12-08 22:47:30 +03:00
9dedc31626 fea(frontend): add WS_SERVER_ADDRESS env 2024-12-08 22:47:02 +03:00
734417b0a6 (frontend) add docker file 2024-10-04 23:31:55 +03:00
7860f9aac4 (refactor) change folder structure 2024-06-18 01:11:26 +03:00