Every store's hasLogin is derived by testing whether the id starts with 'user_'. Seeded ids, imported payroll numbers and other placeholders no longer read as accounts. The roster also marks people whose role is impossible without a login.
Also called: invite or edit · no login yet · why does it say invite next to my employee
- 1crew_members rows report hasLogin only when user_id starts with user_.
- 2org_members and reps use the same test.
- 3Settings uses the flag to decide between a permissions editor and an invite.
- 4PeopleRoster flags roles that cannot work without an account (admin, PM, sales).
Whether a person can actually sign in decides what the settings screen offers — edit their permissions, or send an invite — and that was read off a value that could hold anything, including imported payroll numbers and placeholder text. Anyone carrying one of those reported as having an account, so the screen offered to write permissions for someone who had never had a login. It now tests for a real account rather than for something being filled in. It is shown on the roster too, because the difference between a rep who simply has not been invited and one who cannot see their own leads is invisible everywhere else in the product.
- Placeholder ids masquerading as real accounts.
- Permission editors that write nowhere.
- Silently un-invited staff who cannot do their job.
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 →