feat!: remove the shared demo account
The demo account — one shared user that whitelisted emails entered from the login page, reset on a schedule — goes end to end (owner decision, E34): demo.py and the reset job, users.is_demo and demo_whitelist (migration 0098 deletes the demo user, its audit rows, the reset job's override and notices, then drops the column and table; the downgrade restores the empty schema), the /auth/demo entry, the admin whitelist and reset, the Demo tab, the banner, the login page's "Try the demo", and every is_demo branch in routes, userscope, scheduler and the UI. require_human only ever refused the demo account, so its 87 uses become current_user (owner-approved); require_write_scope keeps its own check. The login page's "or" divider now shows only beside the Google button: without the demo entry under it, an instance without Google would have said "or" to nothing. A contract test (removedFeatures) fails on the word anywhere in the backend, frontend, e2e or scripts — seen red on a planted hit. Size ceilings tightened for the modules that shrank; admin.py is back under the limit.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
Four parts:
|
||||
* the session's life: one open per user, a second Start joins it, a Stop ends it, the cap ends it
|
||||
on its own, the demo account cannot record, nobody reaches another user's session (DB lane);
|
||||
on its own, nobody reaches another user's session (DB lane);
|
||||
* the tag: a request naming the caller's own open session is logged at its level with every line
|
||||
tagged, while a header naming anything else is ignored (a real sign-in through `_session_user`);
|
||||
* the browser's batches: a session counts as consent to its level, and only its own events keep
|
||||
@@ -71,11 +71,6 @@ def test_only_the_two_raised_levels_can_be_recorded(db, make_user, as_user):
|
||||
assert client.post("/api/debug-sessions", json={"level": bogus}).status_code == 422
|
||||
|
||||
|
||||
def test_the_demo_account_cannot_record(db, make_user, as_user):
|
||||
r = as_user(make_user(is_demo=True)).post("/api/debug-sessions", json={"level": "DEBUG"})
|
||||
assert r.status_code == 403 and r.json()["detail"]["code"] == "demo"
|
||||
|
||||
|
||||
def test_stop_ends_it_and_me_stops_reporting_it(db, client, make_user):
|
||||
_signed_in(client, make_user)
|
||||
sid = _start(client)["id"]
|
||||
|
||||
Reference in New Issue
Block a user