1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-09 11:46:49 +00:00
Commit graph

37 commits

Author SHA1 Message Date
catborise
6b51c30dd6 feat(accounts): API tokens show their last use, and a user has at most ten
The API Tokens tab gets a "Last used" column, so an unused token can be
told from one a script still needs. The token's last use is written when
it authenticates, at most once a minute (accounts.auth.TokenAuthentication,
knox's class with that one addition; the API schema describes it as
knox's).

A user has at most ten tokens; a new one is refused until one is
deleted. Expired tokens do not count, and are deleted when a new token is
made.
2026-10-25 10:16:52 +03:00
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
catborise
6dabd69445 fix(accounts): first-login password change is stored, not in the session
The forced change of the generated admin password was a session flag
set at login when the password still matched data/admin_password. A
new session after the file was gone bypassed it.

- UserAttributes.must_change_password (migration 0007) holds it; the
  admin created with a generated password gets it, and a password
  change clears it. ForcePasswordChangeMiddleware reads it.
- A system check (accounts.E001) stops the server unless the middleware
  follows AuthenticationMiddleware; the README has the settings change.
- If the generated password cannot be stored privately, provisioning
  stops without printing it and without creating the admin (one
  transaction for the user and its attributes).
- The admin is provisioned on any real migrate run while no user
  exists, so running migrate again after a failure creates it; flush
  (plan=None) and rollbacks of accounts are skipped.
- The post_migrate receivers check the migration state for the models
  they use, so a targeted migrate on a fresh database (e.g. migrate
  appsettings) no longer fails with 'no such table'.
2026-10-04 01:08:11 +03:00
catborise
b3e6fb2b7a feat(security): enforce require_POST on power actions, prevent open redirects, and isolate instance permissions 2026-09-27 13:20:45 +03:00
catborise
217e106c8b format python code with black 2022-11-02 08:54:35 +03:00
Real-Gecko
1b3fd9d05e replaced ugettext_lazy with gettext_lazy 2020-10-14 18:27:57 +06:00
Real-Gecko
5172a9f619 Accounts app improvements and tests 2020-10-14 14:25:05 +03:00
catborise
922a8e62d1 fix some linter warnings 2020-09-25 15:57:17 +03:00
catborise
44aa746f4b make console password optional for users with permissions 2020-07-17 11:05:47 +03:00
Real-Gecko
47009d47ca Instances overhaul 2020-07-13 15:33:09 +06:00
Real-Gecko
636b5bb1bc Reworked some account views 2020-06-16 18:35:08 +06:00
Real-Gecko
2951d0b035 Cleaned up UserAttributes model 2020-06-16 11:26:58 +06:00
Real-Gecko
9a75ceb0e5 Replaced __unicode__ with __str__ for models 2020-06-15 12:57:17 +06:00
catborise
e97d592e51 fix some messages, add translation for some keywords, update tr locale file 2020-06-12 14:46:17 +03:00
catborise
b7fc8a5fea Language change activation. Fix typos and add new translations 2020-06-10 15:16:58 +03:00
catborise
7538ddab4f Add all settings to appsettings page & Convert settings choices 2020-06-04 12:32:00 +03:00
catborise
22cb8f702a fix code conventions for pylint 2020-06-04 08:48:43 +03:00
Real-Gecko
85929b5327 Fixe migrations for new deployments 2020-05-28 18:19:25 +06:00
Real-Gecko
3d0493537f Added 'instances:clone_instances' permission
Replaces 'can_clone_instances' user attribute
2020-05-28 11:20:23 +06:00
Real-Gecko
a62daad87b Added change password permission
Replaces SHOW_PROFILE_EDIT_PASSWORD option
Can be set on per user or per group basis
2020-05-27 18:46:37 +06:00
catborise
4d40de1b55 Python3 & Django 2.2 Migration - Fix & Updates 2020-03-16 16:59:45 +03:00
catborise
aa32d826d9 django on_delete statement is must after than 2018-08-08 14:50:58 +03:00
catborise
858d1f87d5 integer_validator causes import problem. it removed 2018-07-30 09:24:29 +03:00
catborise
ace30ca952 Libxml2 converted to lxml, django framework upgrade to 1.11.x and some bug fixes 2018-06-27 10:20:51 +03:00
Ing. Jan KRCMAR
b7cd731fda UserAttributes.default_instances moved to django.conf.settings.NEW_USER_DEFAULT_INSTANCES 2017-10-05 08:08:04 +02:00
Ing. Jan KRCMAR
b095a77da5 configure_user() moved from class MyRemoteUserBackend to class UserAttributes, as static factory.
call configure_user() while adding user from form
2017-07-18 15:05:30 +02:00
Ing. Jan KRCMAR
14b0751930 UserAttributes can_clone_instances defaults to True 2017-03-31 14:33:03 +02:00
Daniel Rieper
29b722ff41 Merge branch 'master' of https://github.com/honza801/webvirtcloud
Conflicts:
	instances/templates/instance.html
	instances/views.py
2016-07-29 13:05:54 +02:00
Valentin Samir
7efbfec17f Add an option to allow an user to change VNC settings 2016-05-09 12:09:21 +02:00
Jan Krcmar
25529835b5 set default UserAttributes to instances=1, vcpus=1, memory=2048, disk=20 2016-04-26 08:36:14 +02:00
Jan Krcmar
f8e681dbf4 added user disk quota limit
added quota warning in instance page
2016-03-31 13:12:52 +02:00
Jan Krcmar
317c2a85ae user can now clone instances, admin can specify user quotas (instances,cpus,memory)
user can only select predefined instance names, mac and disk names are selected automatically
2016-03-23 09:00:42 +01:00
Retspen
2d1f72a7e1 Added models and telmplate for sshkeys 2015-05-27 14:10:57 +03:00
Retspen
56f840c893 Fixed pep8 2015-03-27 17:12:15 +02:00
Retspen
02ae7336ea Refactor users page 2015-03-18 17:13:44 +02:00
Retspen
29b05745ad Added users page 2015-03-02 10:52:07 +02:00
Retspen
4d48e79341 Initial commit 2015-02-27 10:53:51 +02:00