Skip to content

feat: use Supabase Auth sessions for hosted accounts - #6

Merged
Defiabell merged 5 commits into
mainfrom
feat/hosted-managed-auth
Sep 20, 2026
Merged

Defiabell merged 5 commits into
mainfrom
feat/hosted-managed-auth

Conversation

@Defiabell

@Defiabell Defiabell commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Hosted login currently performs local password hashing in the Worker and exceeds the free CPU budget. This change moves password handling and browser sessions to a dedicated Supabase Auth project, while retaining ShotSync's account limits, recovery codes, device tokens and file quotas in D1.

Access JWTs stay in browser memory; refresh tokens use a Secure/HttpOnly cookie. The Worker verifies cached asymmetric JWKS, account namespace, authentication version and session revocation. Logout immediately blocks existing JWTs; recovery blocks old JWTs/devices before updating the provider. Website registration still checks Turnstile and the atomic 100-account cap before admin creation, so public Supabase signup remains disabled. Ambiguous registration/recovery mutations fail closed for operator reconciliation.

Default self-hosting remains Worker + R2 + AUTH_TOKEN, without accounts, D1 or Supabase. Migration 0004 preserves existing data; legacy hosted accounts require their recovery code. README and operator documentation explain both modes and rollout limits.

Validation: Worker/D1/R2 unit and browser tests, typecheck, deployment dry-run, independent security review, and real personal Supabase integration (ES256 login, refresh, logout, and same-password recovery rejecting the old refresh token). Production CPU must be measured after rollout; mock tests do not establish free-plan capacity. No paid upgrade.

@Defiabell Defiabell changed the title Move hosted password authentication to Supabase feat: use Supabase Auth sessions for hosted accounts Sep 20, 2026
@Defiabell
Defiabell marked this pull request as ready for review September 20, 2026 02:44
@Defiabell
Defiabell merged commit 549d334 into main Sep 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant