You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Password change and admin reset for local accounts #117
change a password. A signed-in user can't set a new one.
reset a forgotten password or unlock an account. An admin can't do this for a user.
recover from a lost first-admin password. Rerunning scripts/create_tenant_admin.py fails once the tenant exists, so there's no way back short of editing the database.
On 27 Oct the dev admin's password ended up in a chat transcript, and today there's no supported way to rotate it.
Proposed scope (to be confirmed)
Change your own password.POST /api/auth/password takes the current and new password, checks the new one against the same 12-character minimum, and revokes the user's other sessions.
Admin reset. A tenant_admin sets a new password for a member of their own tenant, and the reset is audited. Add the action to docs/ROLES.md and tests/test_roles.py.
On 27 Oct the product owner changed the dev admin's password (tenant dev) through the new change-password dialog. That replaces the password exposed in a chat transcript that morning.
Evidence: the API log on the dev machine at about 18:20 shows POST /api/auth/logout 200 and then POST /api/auth/login 200. The product owner confirms that sign-in used the new password.
Product owner decision, 27 Oct 2026: organisations (tenants) must stay independent. A tenant admin may act only on users within their own organisation.
This confirms the behaviour merged in #122, so no code change is needed:
A user who isn't in the admin's tenant: the reset returns 404, which doesn't reveal that the user exists.
A user who is also in another tenant: the reset is refused with 409. Only an operator with server access can reset them, using scripts/reset_password.py.
Covered by tests/test_password_reset.py: test_admin_cannot_reset_a_user_in_another_tenant and test_user_who_is_also_in_another_tenant_is_refused. The mutation check that removed the refusal made the second test fail.
Activity
Merge pull request #122 from amar-python/feat/117-password-reset
amar-python commentedon Oct 27, 2026
Evidence for closure. Merged by the product owner's instruction on 27 Oct 2026.
main.tests/test_password_reset.py,tests/test_roles.py):Product owner decisions:
Generated by Claude Code
amar-python commentedon Oct 27, 2026
On 27 Oct the product owner changed the dev admin's password (tenant
dev) through the new change-password dialog. That replaces the password exposed in a chat transcript that morning.POST /api/auth/logout 200and thenPOST /api/auth/login 200. The product owner confirms that sign-in used the new password.Generated by Claude Code
amar-python commentedon Oct 27, 2026
Product owner decision, 27 Oct 2026: organisations (tenants) must stay independent. A tenant admin may act only on users within their own organisation.
This confirms the behaviour merged in #122, so no code change is needed:
scripts/reset_password.py.Covered by
tests/test_password_reset.py:test_admin_cannot_reset_a_user_in_another_tenantandtest_user_who_is_also_in_another_tenant_is_refused. The mutation check that removed the refusal made the second test fail.Generated by Claude Code
docs(readme): 27 Oct refresh: test count and limitations