Features
- Added multi-tenancy support for registered users, allowing users to have independent registration and identity verification information for multiple organizations. The
registered\_usersCSV export now contains organization-specific registration data in a nested structure. - Added the
radius\_accounting\_closedsignal for integrations which need to react when a RADIUS accounting session closes. OpenWISP Monitoring now uses this signal to reliably record traffic for all closed sessions, including sessions closed in bulk. - Added REST API endpoints for reviewing RADIUS batch operations, including filtering, pagination, detail views, and deletion of completed batches.
- Added an API endpoint for managing the RADIUS groups assigned to users.
- Added REST API endpoints for managing RADIUS groups.
- Allowed partial custom REST API view modules, with automatic fallback to the default views when individual custom views are not provided.
- Added RADIUS group and notes fields to batch user creation.
Changes
Backward-incompatible changes
- Moved password reset functionality to openwisp-users. The local
PasswordResetSerializeris deprecated and password reset requests now always return HTTP 200 regardless of whether the supplied identifier belongs to an existing user. - Moved user account expiration handling to openwisp-users and removed the corresponding OpenWISP RADIUS management command.
Other changes
- Improved RADIUS session date and time display by using the server timezone consistently with the Django admin.
- Removed the obsolete upgrade_from_django_freeradiusmanagement command.
- Replaced the third-party
jsonfieldpackage with Django's built-inJSONFieldfor RADIUS batch credentials and SMS metadata.
Dependencies
- Bumped
dj-rest-authfrom>=6.0,<7.2to >=6.0,<7.3. - Bumped
django-redisfrom~=6.0.0to ~=7.0.0. - Bumped
weasyprintfrom>=65,<68to >=65,<70. - Bumped
openwisp-notificationsto ~=1.3.0. - Bumped
openwisp-usersto ~=1.3.0. - Bumped
openwisp-utils[rest,celery]to ~=1.3.0. - Replaced Exscript with telnetlib3.
- Dropped support for Django
4.2. - Dropped support for Python
3.9.
Bugfixes
- Fixed blank RADIUS check and reply admin pages for view-only users.
- Fixed email lookups and SAML email synchronization being case-sensitive.
- Fixed the convert_called_station_id command failing to convert Called-Station-ID values.
- Fixed WebSocket authorization for RADIUS batch status updates so staff users can only receive updates for organizations they manage.