The login page tells anyone where the credential files are
- Dominant language
- C#
- Stars
- 0
- Forks
- 0
- Avg merge
- 2h 5m
- Merged PRs (30d)
- 2
Description
`src/frontend/src/main.tsx:1049`, in the shipping admin panel, on the **sign-in screen, before anyone authenticates**:
> Each identity's token is written to `.data/secrets/.token`. If this machine predates passwords, sign in with the token and set a password from the Models tab.
It sits inside a collapsed ``, which hides it from a casual look and not at all from view-source. Anyone who can reach the panel is handed the on-disk location of every identity's eternal credential, together with the naming scheme (`.token`) and the fact that slugs are guessable user names.
That is worse on exactly the install where it matters most. #26 exists because headless installs are reached over a network; on one of those, the login page is a public page.
The same string is in `login.tokenFallbackHint` in all three of `en.json`, `es.json`, `ru.json`. Those keys are consumed only by `src/next/apps/`, which does not run today (#44) — so fixing the hardcoded copy in `main.tsx` alone would leave the leak waiting to come back the moment that tree is mounted. Fix all four.
## What it should say
Where the file lives is an operator's answer to "how do I recover an account", and it belongs in the install documentation an operator already has to read. The person staring at the sign-in box needs to know only that the option exists and who can give them the value.
The end-user portal had the same text and no longer does — see the sign-in strings under `portal.signin.*`, which now say a code exists and that whoever set the machine up can issue one, without naming a path.
Found while reviewing the portal shell.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at src/frontend/src/main.tsx:1049 and compare the login.tokenFallbackHint entries in src/next/apps/'s en.json, es.json, and ru.json with the portal.signin.* strings. Verify the sign-in screen no longer exposes credential paths, filenames, or slug conventions, while still explaining that a token exists and can be issued by the operator; confirm all four copies are updated.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- authentication, frontend, security
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 85/100