Home · Docs · Security · Password + recovery

Password + recovery

Password rules, account recovery via the forgot-password flow, magic-link fallback, and what happens after you reset a password mid-session.

If you signed up with email + password, this page covers what’s required of your password, how to reset a forgotten one, and what happens when you change it.

Password rules

RuleWhat it means
Minimum length8 characters
Allowed charactersAnything — letters, digits, symbols, spaces, Unicode
Maximum lengthNone enforced (Supabase Auth handles this; practical max is high)
StorageHashed (bcrypt-equivalent) — sweetdocs never sees your plaintext password after the hashing step

There’s no upper-cased / lowercased / digit / symbol requirement in v1 — we trust users to pick good passwords. A length-based rule combined with hashing is the most security per friction.

We strongly recommend a unique, ≥16-character passphrase generated by a password manager. The single most effective protection against credential stuffing is to never reuse a password.

Forgot your password?

  1. Sign-in page → Forgot password?
  2. Enter your email
  3. Click Send reset link
  4. Check your inbox for a Supabase Auth email
  5. Click the link → land on the reset page
  6. Type a new password (twice, to confirm) → submit

The reset link has a short validity window (~1 hour) and is single-use.

If you don’t receive the email within a few minutes, check spam and verify the email address you typed. If still nothing, contact support.

The forgot-password flow has a passwordless variant — instead of resetting your password, you can request a one-time magic link that signs you in directly without changing anything.

This is useful when:

After signing in via magic link, you can change your password from Settings → Security if you choose.

Changing your password while signed in

Settings → Security → Change password:

  1. Enter your current password
  2. Enter the new password
  3. Confirm the new password
  4. Submit

You stay signed in on this device. Other devices may be kicked out depending on the Supabase Auth setting (defaults to keeping them signed in — the password change doesn’t auto-revoke existing sessions). To force all other devices off, use Settings → Security → Sign out everywhere after changing. See Sessions + devices.

Lockout and rate-limiting

To slow down brute-force attacks:

Persistent issues — especially if you’re sure your password is correct — usually point at a typo or an account email mismatch.

Two-factor authentication

Two-factor (TOTP) is on the roadmap. Once shipped, you’ll set it up from Settings → Security with an authenticator app (Authy, 1Password, etc.). For orgs needing 2FA today, the closest path is using Google OAuth with Google’s 2FA enabled on the upstream Google account — see Sign-in methods.

When SSO + SCIM ships for Teams orgs, 2FA enforcement is handled by your IdP (Okta, Google Workspace, Azure AD, etc.).

Account takeover defense

A few defaults that protect you:

DefenseDetail
Email change requires double confirmationBoth the old and new email must confirm before the change takes effect (see Sign-in methods)
Password storage is hashedA database breach exposes hashes, not plaintext passwords
Sign-out everywhereAvailable with one click for the moment you suspect compromise
Account deletion is 30-day soft deleteReversible by signing back in within 30 days if a takeover triggered deletion
Auth rate limitsSlow down credential stuffing

If you ever think your account has been compromised:

  1. Change your password (forces re-auth)
  2. Settings → Security → Sign out everywhere
  3. Check your email for any unexpected confirmation messages
  4. Contact support if you suspect data exfiltration