Commit Graph

20 Commits

Author SHA1 Message Date
Matthieu B
498886c06a fix(ldap): address security, correctness, and code quality issues
Security:
- Fix XSS in HTMX responses by replacing f-string HTML with Jinja partials
- Fix TLS verify_cert not being applied (add Tls config to ldap3 Server)
- Fix password_hash NOT NULL conflict for LDAP-only admin accounts
- Fix should_create_ldap_user defaulting to True for existing invitations

Correctness:
- Fix DN reconstruction fragility using escape_rdn for special characters
- Fix connection leaks with try/finally in all LDAPClient methods
- Fix sync interval logic (check FLASK_ENV not WIZARR_ENABLE_SCHEDULER)
- Only register LDAP sync job when LDAP is actually configured
- Make find_user_dn and service_connection public API methods

Cleanup:
- Squash 5 incremental LDAP migrations into single 20251226_add_ldap_support
- Remove duplicate imports/queries in auth routes
- Replace f-string logging with %s formatting
- Extract inline HTML to Jinja template partials
2026-03-29 15:58:09 +02:00
Erwan Leboucher
5bb51e0cf1 feat(ldap): add LDAP authentication and invitation integration 2025-12-27 17:14:17 +01:00
Matthieu B
e70263deab refactor: streamline conditional checks and improve logging clarity 2025-10-23 18:44:30 +02:00
AlexWhitehouse
7d96e92243 feat: Discord notifications now use rich embeds with Wizarr branding
- Convert Discord notifications from plaintext to rich embeds
- Add Wizarr application icon and branding to all notifications
- Include structured version fields for update notifications
- Update test notifications to use proper titles

Closes #935
2025-10-21 15:30:41 +01:00
Matthieu B
1c9225263d feat: Enhance logging configuration with context variable support and improved console rendering
fix: Update activity monitor retrieval method for better clarity and consistency
2025-10-19 16:38:24 +02:00
Matthieu B
1ef83646d1 feat: Enhance SQLite support with WAL mode and retry logic for commits
- Added SQLite engine options for concurrent write support in BaseConfig.
- Implemented a retry mechanism for database commits in ActivityIngestionService to handle lock timeouts.
- Introduced checkpointing for SQLite WAL files in maintenance tasks to prevent unbounded growth.
- Improved code organization and readability in various modules.
2025-10-19 15:20:22 +02:00
Matthieu B
0ac98355dd feat(activity): Implement activity ingestion, identity resolution, and maintenance services
- Added `identity_resolution.py` for resolving Wizarr users and identities.
- Created `ingestion.py` to handle recording and updating activity events.
- Introduced `maintenance.py` for cleanup and session management tasks.
- Developed `queries.py` for read-oriented operations on activity sessions.
- Implemented background tasks in `activity.py` for scheduled maintenance.
- Added tests for activity services and blueprint to ensure functionality.
2025-10-16 15:18:31 +02:00
Matthieu B
b682967ed2 feat: add notification events handling and UI updates for user notifications 2025-10-04 14:46:01 +02:00
Matthieu B
f295a345a1 feat: add user disable functionality and update user management settings
- Introduced `is_disabled` attribute to the User model.
- Added `expiry_action` selection in the GeneralSettingsForm for user management.
- Implemented `disable_user` methods for various media clients (Audiobookshelf, Jellyfin, Kavita, etc.) to handle user disabling.
- Updated `check_expiring` task to process expired users based on the new settings.
- Enhanced user interface to reflect disabled status in user cards.
- Added migration for the new `is_disabled` column in the user table.
2025-09-27 12:19:48 +02:00
Matthieu B
414969e84c update update 2025-09-16 16:06:11 +02:00
Matthieu B
d34ee91553 feat: notified of new update 2025-09-16 16:03:51 +02:00
Matthieu B
c317e66fa8 fix: update API key hashing to use UTF-8 encoding and improve bundle name handling in export
fix: add requests.exceptions import in Audiobookrequest and Ombi clients
fix: ignore type errors in invitation unit tests for library and server associations
fix: use timezone-aware datetime for export dates in WizardExportImportService
2025-09-05 14:41:37 +02:00
Matthieu B
e9acc3fdba Enhance user management by improving modal interactions and user table refresh logic 2025-08-13 19:20:38 +02:00
Matthieu B
5035939acb Refactor expiry check task to ensure proper application context handling 2025-08-13 13:43:20 +02:00
Matthieu B
ccf670179e Refactor code structure for improved readability and maintainability 2025-08-13 10:55:50 +02:00
Matthieu B
d4dd57ee1e feat: Add comprehensive connections and expiry management system
- Add new connections management system with MediaConnection and DiscordWebhook models
- Implement dynamic server configuration with URL field support
- Add expiry management system with automatic user cleanup
- Create wizard preset system for streamlined server setup
- Add dedicated connections interface in settings with CRUD operations
- Integrate expiry functionality with connection management
- Add proper form validation and error handling
- Update templates and routes for new connection workflow

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 22:21:10 +02:00
Matthieu B
02126de7b8 Add ty dependency and pre-push hook for type checking
- Added `ty` version 0.0.1a14 to dependencies in `pyproject.toml`.
- Updated `.pre-commit-config.yaml` to include a pre-push hook for type checking using `ty`.
- Made minor adjustments in various files to ensure compatibility with type checking.
2025-07-15 21:32:43 +02:00
Matthieu B
7b8f64af7d Fix SQLAlchemy model constructors to accept keyword arguments
- Added __init__ constructors to all SQLAlchemy models
- Fixed pyright 'No parameter named' errors across the codebase
- Fixed various ruff linting issues (SIM108, E741, E402, SIM102, B904, SIM105)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 13:52:15 +02:00
Matthieu B
6c8fcec145 fix and close #593 2025-06-10 15:55:29 +01:00
Matthieu B
4889e25d31 Huge rewrite 2025-05-20 13:01:20 +01:00