- Add GET /users/{user_id}/tenant-count endpoint
- Add scope query param (current|all) to DELETE /users/{user_id}
- UserService.delete_user now supports scope='all' to deactivate/remove
user from all tenants
- Frontend users.ts: getTenantCount(), delete() accepts scope param
- Frontend +page.svelte: async openDeleteDialog fetches tenant count,
shows 4-button dialog when user belongs to >1 tenant
- docker-entrypoint.sh: Keycloak wait now conditional on WAIT_FOR_KEYCLOAK=1
- Updated user statistics endpoint to include access token and hub tenant ID for improved data retrieval.
- Refactored user listing functionality to support access token and hub tenant ID, ensuring accurate user data from the Hub.
- Introduced new methods in UserService for fetching users with additional information from the Hub.
- Enhanced security functions to ensure user-tenant relationships are maintained and synchronized with the Hub.
- Improved frontend logic to handle company initialization and user authentication more effectively.
- Updated multiple DTO classes across various modules to replace the `Config` class with `model_config = ConfigDict(from_attributes=True)`.
- This change enhances consistency in attribute handling and aligns with the latest Pydantic practices.
- Adjusted error handling in core modules to change status codes from `HTTP_422_UNPROCESSABLE_ENTITY` to `HTTP_422_UNPROCESSABLE_CONTENT` for improved clarity in validation responses.
- Updated the date calculations in the DashboardService to use the `invoice_date` field instead of `created_at` for querying previous totals and monthly data.
- Changed the date variables to return only the date part, improving clarity and consistency in date handling.
These changes enhance the accuracy of invoice data retrieval in the dashboard service.
- Renamed LineItem interface to Item and adjusted properties accordingly.
- Updated CreateItemData and UpdateItemData interfaces to reflect new structure.
- Modified components to use the new Item interface, removing nested lines.
- Adjusted data binding in item configuration, main data, and other related components.
- Simplified item creation and editing logic by removing unnecessary nesting.
- Ensured all references to line items are updated to reflect the new structure.
- Added centralized API exports for admin functionalities.
- Created permissions API for managing system permissions, including listing, creating, updating, and deleting permissions.
- Developed role-permissions API for managing permissions assigned to roles, including listing, assigning, and removing permissions.
- Implemented roles API for managing company roles, including listing, creating, updating, and deleting roles.
- Created user-permissions API for managing individual user permissions, including assigning and revoking permissions.
- Developed user-roles API for managing user roles, including listing roles assigned to users and assigning/removing roles.
- Added utility functions for permission checks and route guards based on user permissions.
- Implemented admin dashboard layout and roles management page with UI components for role and permission management.
- Added Pydantic schemas for permission-related requests and responses in `schemas.py`.
- Created seed data for various permissions and roles in `seed.py`.
- Developed a `PermissionService` class in `service.py` to handle permission logic, including user role assignments and direct permission grants.
- Implemented unit tests for permission functionalities in `test_permissions.py`, covering role assignments, permission checks, and expiration handling.
- Seeded trailer types data in `trailer_types/seed.py`.
- Updated `TimestampMixin` to use `server_default` for `created_at` and `updated_at` fields.
- Modified various models in the `fa_classes`, `doc_types_dig`, `ports`, `units_of_measure`, `invoices`, `parts`, `trailers`, `licenses`, `tenants`, and `user_tenant` modules to set `server_default` for boolean fields and other relevant fields.
- Adjusted the `trailer_types` model to change the schema from `a76` to `public`.
- Implemented database migration execution during application startup in `main.py`.
- Removed old Alembic migration execution logic from the entrypoint script.
- Updated seed data for units of measure and removed unused seed files.