Require operator sessions for privileged dashboard access #259

Merged
timmy merged 1 commits from timmy/258-operator-session into main 2026-08-08 03:42:54 +00:00
Owner

Closes #258

What changed

  • exchange a configured operator secret for a short-lived signed, secure HttpOnly session
  • reject anonymous private reads before Gitea and require same-origin session CSRF proof for mutations
  • carry CSRF proof through foreground and background PWA delivery
  • add mobile-friendly sign-in plus sign-out that clears only Stackchain private device state
  • preserve health checks and subpath-scoped deployments without disclosing the Gitea identity

Verification

  • RED: pytest -q tests/test_dashboard_auth.py → 6 expected failures before implementation
  • RED: frontend session tests → 3 expected failures before implementation
  • GREEN: pytest -q → 452 passed in 14.81s
  • python3 -m compileall -q src tests
  • node --check frontend/session.js
  • node --check frontend/service-worker.js
  • git diff --check
Closes #258 ## What changed - exchange a configured operator secret for a short-lived signed, secure HttpOnly session - reject anonymous private reads before Gitea and require same-origin session CSRF proof for mutations - carry CSRF proof through foreground and background PWA delivery - add mobile-friendly sign-in plus sign-out that clears only Stackchain private device state - preserve health checks and subpath-scoped deployments without disclosing the Gitea identity ## Verification - RED: `pytest -q tests/test_dashboard_auth.py` → 6 expected failures before implementation - RED: frontend session tests → 3 expected failures before implementation - GREEN: `pytest -q` → 452 passed in 14.81s - `python3 -m compileall -q src tests` - `node --check frontend/session.js` - `node --check frontend/service-worker.js` - `git diff --check`
timmy added 1 commit 2026-08-08 03:42:04 +00:00
feat: require operator sessions for privileged access (#258)
All checks were successful
CI / lint (pull_request) Successful in 23s
CI / build-frontend (pull_request) Successful in 4s
39357263d0
timmy merged commit a7afd85634 into main 2026-08-08 03:42:54 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: stackchain/stackchain-dashboard#259
No description provided.