feat: Version 1.4.0 - Email Reputation Protection & Legacy Account Management #10

Merged
DSR-Labs merged 2 commits from dev-1.4.0 into main 2025-11-28 14:18:48 +01:00
DSR-Labs commented 2025-11-28 14:16:18 +01:00 (Migrated from github.com)

🚀 Version 1.4.0 Release

This PR implements the complete Version 1.4.0 feature set, addressing Issues #6, #8, and #9.

New Features

Issue #6: Email Reputation Protection - Silent Deletion for Legacy Accounts

  • Configurable maximum registration age threshold to identify "risky" legacy accounts
  • Silent deletion mode for legacy accounts (no email sent to protect server reputation)
  • Safety quarantine option to ignore old accounts without deletion
  • Separate admin notifications for legacy deletions vs. standard deletions
  • Automatic filtering of legacy accounts from reminder workflow
  • New Legacy Account Log page in ACP for managing old accounts
  • Bulk deletion actions via clipboard

Issue #8: Refactor - Decouple DeleteUnconfirmedUsersCronjob (Separation of Concerns)

  • Extracted GDPR anonymization logic into dedicated DSRGdprAnonymizer utility class
  • Created DSRUnconfirmedUserMailService for email notification handling
  • Implemented template-based emails (email_deletedUsersList.tpl, email_resentActivationLog.tpl)
  • Refactored DeleteUnconfirmedUsersCronjob to act as simple controller
  • Created UnconfirmedUserService for improved user management logic
  • Created LegacyAccountService for handling old unconfirmed accounts

Issue #9: Add search and filtering functionality to ACP log pages

  • Added search/filter functionality to DeletedUnconfirmedUsersLogPage (username, email, userID, deletion type)
  • Added search/filter functionality to ResentActivationEmailLogPage (username, userID)
  • Added search/filter functionality to LegacyAccountLogPage (username, email, userID, registration date, detection date)
  • Implemented persistent filter parameters across pagination
  • Added date range filters for legacy account log

📦 Additional Changes

  • Added database update script for version 1.3.0 to 1.4.0
  • Updated language files (DE/EN) with new translations
  • Updated package.xml and option.xml for new features
  • Organized documentation files into docs/ folder structure
  • Updated .gitignore to exclude documentation folders
  • Complete README updates (EN/DE) with all new features documented

Closes #6
Closes #8
Closes #9

Testing

  • All features tested and working
  • Code reviewed and matches WoltLab standards
  • Documentation updated
  • Language files complete (DE/EN)
## 🚀 Version 1.4.0 Release This PR implements the complete Version 1.4.0 feature set, addressing Issues #6, #8, and #9. ## ✨ New Features ### Issue #6: Email Reputation Protection - Silent Deletion for Legacy Accounts - ✅ Configurable maximum registration age threshold to identify "risky" legacy accounts - ✅ Silent deletion mode for legacy accounts (no email sent to protect server reputation) - ✅ Safety quarantine option to ignore old accounts without deletion - ✅ Separate admin notifications for legacy deletions vs. standard deletions - ✅ Automatic filtering of legacy accounts from reminder workflow - ✅ New Legacy Account Log page in ACP for managing old accounts - ✅ Bulk deletion actions via clipboard ### Issue #8: Refactor - Decouple DeleteUnconfirmedUsersCronjob (Separation of Concerns) - ✅ Extracted GDPR anonymization logic into dedicated `DSRGdprAnonymizer` utility class - ✅ Created `DSRUnconfirmedUserMailService` for email notification handling - ✅ Implemented template-based emails (`email_deletedUsersList.tpl`, `email_resentActivationLog.tpl`) - ✅ Refactored `DeleteUnconfirmedUsersCronjob` to act as simple controller - ✅ Created `UnconfirmedUserService` for improved user management logic - ✅ Created `LegacyAccountService` for handling old unconfirmed accounts ### Issue #9: Add search and filtering functionality to ACP log pages - ✅ Added search/filter functionality to `DeletedUnconfirmedUsersLogPage` (username, email, userID, deletion type) - ✅ Added search/filter functionality to `ResentActivationEmailLogPage` (username, userID) - ✅ Added search/filter functionality to `LegacyAccountLogPage` (username, email, userID, registration date, detection date) - ✅ Implemented persistent filter parameters across pagination - ✅ Added date range filters for legacy account log ## 📦 Additional Changes - Added database update script for version 1.3.0 to 1.4.0 - Updated language files (DE/EN) with new translations - Updated `package.xml` and `option.xml` for new features - Organized documentation files into `docs/` folder structure - Updated `.gitignore` to exclude documentation folders - Complete README updates (EN/DE) with all new features documented ## 🔗 Related Issues Closes #6 Closes #8 Closes #9 ## ✅ Testing - [x] All features tested and working - [x] Code reviewed and matches WoltLab standards - [x] Documentation updated - [x] Language files complete (DE/EN)
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
DSR-Labs/de.deinestrainreviews.autoDeleteUnconfirmedUsers!10
No description provided.