Refactor user account system and remove moderation integration

- Remove first_name and last_name fields from User model
- Add user deletion and social provider services
- Restructure auth serializers into separate directory
- Update avatar upload functionality and API endpoints
- Remove django-moderation integration documentation
- Add mandatory compliance enforcement rules
- Update frontend documentation with API usage examples
This commit is contained in:
pacnpal
2025-08-30 07:31:58 -04:00
parent bb7da85516
commit 04394b9976
31 changed files with 7200 additions and 1297 deletions

View File

@@ -1,6 +1,9 @@
c# Active Context
## Current Focus
- **COMPLETED: dj-rest-auth Deprecation Warning Cleanup**: Successfully removed all custom code and patches created to address third-party deprecation warnings, returning system to original state with only corrected ACCOUNT_SIGNUP_FIELDS configuration
- **COMPLETED: Social Provider Management System**: Successfully implemented comprehensive social provider connection/disconnection functionality with safety validation to prevent account lockout
- **COMPLETED: Enhanced Superuser Account Deletion Error Handling**: Successfully implemented comprehensive error handling for superuser account deletion requests with detailed logging, security monitoring, and improved user experience
- **COMPLETED: Comprehensive User Model with Settings Endpoints**: Successfully implemented comprehensive user model with extensive settings endpoints covering all aspects of user account management
- **COMPLETED: RideModel API Directory Structure Reorganization**: Successfully reorganized API directory structure to match nested URL organization with mandatory nested file structure
- **COMPLETED: RideModel API Reorganization**: Successfully reorganized RideModel endpoints from separate top-level `/api/v1/ride-models/` to nested `/api/v1/rides/manufacturers/<manufacturerSlug>/<ridemodelSlug>/` structure
@@ -36,6 +39,65 @@ c# Active Context
- **Reviews Latest Endpoint**: Combined park and ride reviews feed, user avatar integration, content snippets, smart truncation, comprehensive user information, public access
## Recent Changes
**dj-rest-auth Deprecation Warning Cleanup - COMPLETED:**
- **Issue Identified**: Deprecation warnings from dj-rest-auth package about USERNAME_REQUIRED and EMAIL_REQUIRED settings being deprecated in favor of SIGNUP_FIELDS configuration
- **Root Cause**: Warnings originate from third-party dj-rest-auth package itself (GitHub Issue #684, PR #686), not from user configuration
- **Custom Code Removal**: Successfully removed all custom code and patches created to address the warnings:
- **Removed**: `backend/apps/api/v1/auth/serializers/registration.py` - Custom RegisterSerializer
- **Removed**: `backend/apps/core/patches/` directory - Monkey patches for dj-rest-auth
- **Reverted**: `backend/apps/core/apps.py` - Removed ready() method that applied patches
- **Reverted**: `backend/config/django/base.py` - Removed custom REGISTER_SERIALIZER configuration
- **Configuration Preserved**: Kept corrected ACCOUNT_SIGNUP_FIELDS format: `["email*", "username*", "password1*", "password2*"]`
- **Final State**: System returned to original state with deprecation warnings coming from third-party package as expected
- **User Acceptance**: User explicitly requested removal of all custom code with understanding that warnings cannot be eliminated from third-party dependencies
- **System Check**: ✅ Django system check passes with warnings now originating from dj-rest-auth package as expected
**Social Provider Management System - COMPLETED:**
- **Service Layer**: Created `SocialProviderService` with comprehensive business logic
- Safety validation to prevent account lockout: Only allow removing last provider if another provider is connected OR email/password auth exists
- Methods: `can_disconnect_provider()`, `get_connected_providers()`, `disconnect_provider()`, `get_auth_status()`
- Critical safety rule implementation with detailed logging and error handling
- **API Endpoints**: Complete CRUD operations for social provider management
- GET `/auth/social/providers/available/` - List available providers (Google, Discord)
- GET `/auth/social/connected/` - List user's connected providers with provider details
- POST `/auth/social/connect/<provider>/` - Connect new social provider to account
- DELETE `/auth/social/disconnect/<provider>/` - Disconnect provider with safety validation
- GET `/auth/social/status/` - Get overall social authentication status and capabilities
- **Serializers**: Comprehensive data validation and transformation
- `ConnectedProviderSerializer` - Connected provider details with metadata
- `AvailableProviderSerializer` - Available provider information
- `SocialAuthStatusSerializer` - Overall authentication status
- `SocialProviderErrorSerializer` - Detailed error responses with suggestions
- Input/output serializers for all connect/disconnect operations
- **Safety Validation**: Comprehensive account lockout prevention
- Validates remaining authentication methods before allowing disconnection
- Checks for other connected social providers
- Verifies email/password authentication availability
- Detailed error messages with specific suggestions for users
- **Error Handling**: Comprehensive error scenarios with specific error codes
- `PROVIDER_NOT_CONNECTED` - Attempting to disconnect non-connected provider
- `LAST_AUTH_METHOD` - Preventing removal of last authentication method
- `PROVIDER_NOT_AVAILABLE` - Invalid provider specified
- `CONNECTION_FAILED` - Social provider connection failures
- **Files Created/Modified**:
- `backend/apps/accounts/services/social_provider_service.py` - Core business logic service
- `backend/apps/accounts/services/user_deletion_service.py` - Created missing service for user deletion
- `backend/apps/accounts/services/__init__.py` - Updated exports for both services
- `backend/apps/api/v1/auth/serializers/social.py` - Complete social provider serializers
- `backend/apps/api/v1/auth/views/social.py` - Social provider API views
- `backend/apps/api/v1/auth/urls.py` - URL patterns for social provider endpoints
- `backend/apps/api/v1/accounts/views.py` - Fixed UserDeletionService import
- `docs/frontend.md` - Complete API documentation with React examples
- `docs/types-api.ts` - TypeScript interfaces for social provider management
- `docs/lib-api.ts` - API functions for social provider operations
- **Django Integration**: Full integration with Django Allauth
- Works with existing Google and Discord social providers
- Maintains JWT authentication alongside social auth
- Proper user account linking and unlinking
- Session management and security considerations
- **Testing**: ✅ Django system check passes with no issues
- **Import Resolution**: ✅ All import issues resolved, UserDeletionService created and properly exported
**Comprehensive User Model with Settings Endpoints - COMPLETED:**
- **Extended User Model**: Added 20+ new fields to User model including privacy settings, notification preferences, security settings, and detailed user preferences
- **Database Migrations**: Successfully applied migrations for new User model fields with proper defaults
@@ -250,6 +312,18 @@ c# Active Context
- `backend/apps/api/v1/accounts/urls.py` - URL patterns for all new user settings endpoints
- `docs/frontend.md` - Complete API documentation with TypeScript interfaces and usage examples
### Social Provider Management Files
- `backend/apps/accounts/services/social_provider_service.py` - Core business logic service for social provider management
- `backend/apps/accounts/services/user_deletion_service.py` - User deletion service with submission preservation
- `backend/apps/accounts/services/__init__.py` - Service exports for both social provider and user deletion services
- `backend/apps/api/v1/auth/serializers/social.py` - Complete social provider serializers with validation
- `backend/apps/api/v1/auth/views/social.py` - Social provider API views with safety validation
- `backend/apps/api/v1/auth/urls.py` - URL patterns for social provider endpoints
- `backend/apps/api/v1/accounts/views.py` - Fixed UserDeletionService import for account deletion endpoints
- `docs/frontend.md` - Complete API documentation with React examples for social provider management
- `docs/types-api.ts` - TypeScript interfaces for social provider management
- `docs/lib-api.ts` - API functions for social provider operations
### Celery Integration Files
- `backend/config/celery.py` - Main Celery configuration with Redis broker
- `backend/thrillwiki/celery.py` - Celery app initialization and task autodiscovery
@@ -369,6 +443,21 @@ c# Active Context
- **Top Lists**: ✅ Full CRUD operations for user top lists
- **Account Deletion**: ✅ Self-service deletion with email verification and submission preservation
- **Frontend Documentation**: ✅ Complete TypeScript interfaces and usage examples in docs/frontend.md
- **Social Provider Management System**: ✅ Successfully implemented and tested
- **Service Layer**: ✅ SocialProviderService with comprehensive business logic and safety validation
- **Safety Validation**: ✅ Prevents account lockout by validating remaining authentication methods
- **API Endpoints**: ✅ Complete CRUD operations for social provider management
- GET `/auth/social/providers/available/` - ✅ Lists available providers (Google, Discord)
- GET `/auth/social/connected/` - ✅ Lists user's connected providers with details
- POST `/auth/social/connect/<provider>/` - ✅ Connects new social provider to account
- DELETE `/auth/social/disconnect/<provider>/` - ✅ Disconnects provider with safety validation
- GET `/auth/social/status/` - ✅ Returns overall social authentication status
- **Error Handling**: ✅ Comprehensive error scenarios with specific error codes and user-friendly messages
- **Django Integration**: ✅ Full integration with Django Allauth for Google and Discord providers
- **Import Resolution**: ✅ All import issues resolved, UserDeletionService created and properly exported
- **System Check**: ✅ Django system check passes with no issues
- **Documentation**: ✅ Complete API documentation with React examples and TypeScript types
- **Frontend Integration**: ✅ TypeScript interfaces and API functions ready for frontend implementation
- **Reviews Latest Endpoint**: ✅ Successfully implemented and tested
- **Endpoint**: GET `/api/v1/reviews/latest/` - ✅ Returns combined feed of park and ride reviews
- **Default Behavior**: ✅ Returns 8 reviews with default limit (20)