Customer can add their own password

A customer who wants privacy can set a password on their own link from the sign-in screen, and it cannot be overwritten afterwards.

What it is

The sign-in card tells a password-less visitor that anyone with the link can view the estimate, and offers to add password protection. Setting one hashes with bcrypt. Once set, the public route refuses to change it. Passworded links also stop the portal handing out contact details and force a token on the live project data feed.

Also called: password protect my quote · private estimate link

See it
Customer can add their own password
🔒ridgelinepostframe.com/project/custom149
Barndominium
Framing · on schedule
The inline 'Set a Password' panel expanding inside the sign-in card. LoginForm in src/app/client/[id]/page.tsx. Sample data — no customer information appears here.
How it works
  1. 1Customer clicks 'Add password protection' and enters it twice
  2. 2POST /api/client-portal/set-password hashes with bcrypt and stores it
  3. 3The route refuses outright if a password_hash already exists
  4. 4Later loads see hasPassword true, and the project poll must carry the session token
Why we built it

Anyone holding or guessing a link id could overwrite an existing customer's portal password, locking the real buyer out of their own project and handing the link to a stranger. Customers who want a password can still set one, but an existing one is never silently overwritten. Accounts still on older, weaker password storage are upgraded quietly the next time they sign in, so nobody is locked out by the fix.

The problem
  • Public links with no privacy option for price-sensitive buyers
  • An unauthenticated endpoint that could hijack someone else's link
Sound familiar?
What you get
Privacy is the customer's choice, not a support ticket
A password, once set, cannot be reset by a stranger

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →