1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 19:26:48 +00:00
webvirtcloud/accounts
catborise 1c60696ea1 feat(accounts): API tokens for scripts and tools
The REST API took only the login session, so a script could not use it
without a browser. A user now makes API tokens on the profile page (API
Tokens tab): a name, and an expiry of 30, 90 or 365 days or none. The
token is shown once, on a page that is not cached, and then kept only as
a SHA-512 digest; the list shows its name, first characters, creation
and expiry, and a token is deleted there. Tools send it as
"Authorization: Token wvc_...", and act as its user, with that user's
permissions. Making and deleting a token is logged, without the token.

A password alone (HTTP Basic) still does not reach the API, as it would
skip the OTP second factor: a token is made in a session that passed the
login and its OTP. The token class comes first, so a refused request gets
401 with its challenge instead of 403.

django-rest-knox 5.1.0 provides the tokens (accounts.ApiToken adds the
name); settings.py takes "knox", KNOX_TOKEN_MODEL and REST_KNOX from the
template.
2026-10-24 23:14:27 +03:00
..
migrations feat(accounts): API tokens for scripts and tools 2026-10-24 23:14:27 +03:00
templates feat(accounts): API tokens for scripts and tools 2026-10-24 23:14:27 +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(accounts): API tokens for scripts and tools 2026-10-24 23:14:27 +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 feat(accounts): API tokens for scripts and tools 2026-10-24 23:14:27 +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 feat(accounts): API tokens for scripts and tools 2026-10-24 23:14:27 +03:00
otp.py fix(accounts): a username longer than the field is refused by the login form 2026-10-23 16:06:10 +03:00
urls.py feat(accounts): API tokens for scripts and tools 2026-10-24 23:14:27 +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(accounts): API tokens for scripts and tools 2026-10-24 23:14:27 +03:00