Version 5.2.2
May 1, 2026
Fixed
- Deactivate account form now returns proper JSON responses when called via AJAX
Version 5.2.1
May 1, 2026
Added
- Inactive Account Reminder email and
porter/users/cleanup-inactiveconsole command (defaults: warn after 365 days of inactivity, deactivate after 395) - Reactivating a user automatically clears their
lastLoginDate, so the cleanup gives them a fresh inactivity clock
Changed
- Settings tabs reorganised, with section headings and action-style toggle labels
Version 5.2.0
May 1, 2026
The legacy
Send Confirmation Emailtoggles and their system messages have been removed. EnableAccount DeletedandAccount DeactivatedunderPorter > Notificationsto keep sending confirmation emails, and re-apply any customisations toporter_account_deleted_email/porter_account_deactivated_email.
Added
- Welcome email when a user’s account is activated
- New Device Login email when a sign in is detected from a new IP or user agent
- Password Changed email
- Email Address Changed email, sent to the user’s previous address
- Account Suspended and Account Restored emails
- Account Deactivated and Account Deleted emails, fired on any path
- Failed Login Attempts email when failures cross a configurable threshold (default 3)
- Responsive HTML email layout at
src/templates/email/_layout.twig - System messages for each notification, editable under
Settings > System Messages porter_user_loginstable tracking the last known IP/UA hash per user
Removed
deleteAccountConfirmationEmail/deactivateAccountConfirmationEmailsettingsporter_delete_account_confirmation_email/porter_deactivate_account_confirmation_emailsystem messages
Fixed
- Template-level
redirectoverride on the deactivate account form was ignored on submit
Version 5.1.2
February 22, 2026
Changed
- Removed leftover debug code and unused imports
Version 5.1.1
February 22, 2026
Fixed
- Magic link JSON response incorrectly returned success when it failed
- Password policy checks were running each rule twice unnecessarily
- Delete account confirmation field could error if the field name was invalid
Changed
- Logging now uses Craft's built-in Monolog logger instead of a custom log file
Version 5.1.0
February 22, 2026
If you copied the deactivate account template into your project, you'll need to update it to use a
<form>with a POST request instead of a plain<a>link. SeedeactivateAccountForm.twigfor the updated markup.
Fixed
- Password maximum length rule was never being applied
- Magic link request could error if the email address didn't belong to any user
- Magic link could error if the user account was deleted after the link was sent
- Deactivate account action was not protected against cross-site request forgery (CSRF)
- Email verifier API errors were being output directly instead of being logged
- Email verifier API could hang indefinitely if the service was unresponsive
- Email verifier could error if the service returned an unexpected response
Changed
- Deactivate account form now uses a proper form submission instead of a plain link
- Added a database index on magic link tokens for faster lookups
Version 5.0.2
July 11, 2024
Fixed
- If password field is blank when saving a user in the CP, skip password validation
Version 5.0.1
May 30, 2024
Changed
- Icon to a new shiny (literally) icon
Version 5.0.0
May 30, 2024
Changed
- Craft 5 compatibility
Version 1.0.4
March 28, 2024
Fixed
- Blank errors appearing when matching password rules
Added
- Passwords changed in the CP now go through the password rules
Version 1.0.3
August 23, 2022
Added
porter.phpconfig file example.
Version 1.0.2
August 23, 2022
Added
craft.porter.deleteAccountFormProperties()variable to get default delete account form template properties in Twig.craft.porter.deactivateAccountFormProperties()variable to get default deactivate account form template properties in Twig.craft.porter.magicLinkFormProperties()variable to get default magic link form template properties in Twig.
Version 1.0.0
June 20, 2022
Added
- Initial release