1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-09 11:46:49 +00:00
webvirtcloud/accounts
catborise 8c0fbff8f7 feat(logs): admin changes and logins are recorded on the Logs page
The Logs page shows who added, changed or deleted a compute, from web
or API, and every login, failed login, lockout and logout, with the
client address and a Result column (Done, Failed, Unknown for older
rows). A failed change is recorded with its reason and the error still
reaches the user; a refused one is recorded too.

- logs.audit.write saves each row in its own savepoint and never
  raises, so a log write cannot break or undo the action it records.
  The audit() context manager writes one row when the change ends.
- Logs gains success and ip; user, host and instance are wider and
  date is indexed. The page orders by date then id.
- A compute edit names the changed fields; an edit that changes
  nothing writes no row, and an empty password field is no change.
- A compute's VMs leaving the panel get a system row each: owners
  kept on the Removed VMs page, moved to another compute, restored,
  left without owners, or the removed record expired.
- Job rows carry the result. A job's log entry that cannot be
  computed is logged and skipped instead of rolling back the finish
  (test_service.py changes this on purpose).
- Logins are recorded by signal receivers; CustomLoginView is removed
  and the plain LoginView is used. A wrong OTP code is a failed login,
  counted by django-axes toward the lockout.

Panel records and host-side objects follow in the next layers.
2026-10-23 10:30:48 +03:00
..
migrations fix(accounts): migrate no longer overrides the change-password permission 2026-10-04 20:26:53 +03:00
templates fix(templates): forms and detail lists fit a phone screen 2026-10-21 13:19:14 +03:00
templatetags lint with black python. convert f style strings to old one. some small fixes 2020-11-05 12:34:31 +03:00
tests feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
__init__.py Fixe migrations for new deployments 2020-05-28 18:19:25 +06:00
apps.py fix(accounts): migrate no longer overrides the change-password permission 2026-10-04 20:26:53 +03:00
checks.py fix(accounts): migrate no longer overrides the change-password permission 2026-10-04 20:26:53 +03:00
forms.py format python code with black 2022-11-02 08:54:35 +03:00
lockout.py feat(accounts): failed logins lock a user for the address they come from 2026-10-06 11:05:03 +03:00
middleware.py fix(accounts): first-login password change is stored, not in the session 2026-10-04 01:08:11 +03:00
models.py fix(accounts): first-login password change is stored, not in the session 2026-10-04 01:08:11 +03:00
otp.py feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
urls.py feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00
utils.py build(deps): the OTP e-mail draws its QR code with segno 2026-10-12 07:24:56 +03:00
views.py feat(logs): admin changes and logins are recorded on the Logs page 2026-10-23 10:30:48 +03:00