* feat: set up UserAuditLog
* refactor: extract payment callbacks into their own files + handle subscription user_audit_log
* feat: handle account linking for user audit log
* chore: user_audit_log for mailboxes
* chore: user_audit_log for custom domains
* chore: user_audit_log for contacts
* chore: user_audit_log for directories
* fix: do not enforce cronjob being defined in choices + enable user deletion
* chore: user_audit_log for user deletion
* refactor: change emit_user_audit_log function to receive the full user object
* feat: add user_audit_log migration
* test: fix tests
* test: add some tests for user_audit_log
* fix: spf record verification user_audit_log
* chore: add missing index to user_audit_log.created_at
* chore: add missing index to alias_audit_log.created_at
* fix: improve MX and SPF domain handling
* fix: do not use get_instance function
* fix: legacy use of tuples instead of MxRecord
* refactor: rename partner custom domain variables
* chore: change max_retries to 10
* chore: only send custom domain deleted event if it is not a partner domain
* chore: newrelic events metric names rename
* chore: emit failed events metric
* chore: migration for contact.flags and custom_domain.pending_deletion
* chore: mark custom_domain as pending_deletion when deleting it
* chore: add event type to metric
* fix: scripts/new-migration to use poetry again
* chore: add migration to add custom_domain.partner_id
* chore: refactor create_custom_domain
* chore: allow to specify partner_id to custom_domain
* refactor: can_use_domain return cause
* refactor: remove intermediate result class
* Do not close session since it leads to orphan user object
* Redirect instead of render to avoid having to have a mailbox object
* On inital partner link/login trigger sync
* Update github action upload/artifact to v4
* Remove sys.exit used to test script locally
* Simplified script to update alias flags and note
* Move set default alias to a separate method to reuse it
* Add tests
* Find domains by domain not by id
* Revert models and setting changes
* Remove non required function
* Update render function to receive user always as a param
(cherry picked from commit fb53632298b08ab40bb82b8c8724a0bf254b2632)
* Add user to the kwargs
* feat: add protocol buffers for events
* chore: add EventDispatcher
* chore: add WebhookEvent class
* chore: emit events
* feat: initial version of event listener
* chore: emit user plan change with new timestamp
* feat: emit metrics + add alias status to create event
* chore: add newrelic decorator to functions
* fix: event emitter fixes
* fix: take null end_time into account
* fix: avoid double-commits
* chore: move UserDeleted event to User.delete method
* db: add index to sync_event created_at and taken_time columns
* chore: add index to model
* add User.enable_data_breach_check column
* user can turn on/off the data breach check
* only run data breach check for user who enables it
* add tips to run tests using a local DB (without docker)
* refactor True check
* trim trailing space
* fix test
* Apply suggestions from code review
Co-authored-by: Adrià Casajús <acasajus@users.noreply.github.com>
* format
---------
Co-authored-by: Son NK <son@simplelogin.io>
Co-authored-by: Adrià Casajús <acasajus@users.noreply.github.com>
* Update logs with more relevant info for debugging purposes
* Improved logs for alias creation rate-limit
* Reduce sudo time to 120 secs
* log fixes
* Fix missing object to add to the session
* replace black by ruff
* move alias import/export to settings
* fix html closing tag
* add rate limit for alias import & export
---------
Co-authored-by: Son NK <son@simplelogin.io>
* Move accounts settings under sudo
* Fixed sudo mode
* Add a log message
* Update test
* Renamed sudo_setting to account_setting
* Moved simple login data export and alias/import export to account settings
* Move account settings to the top-right dropdown
* fix error when user logs out, go back to /dashboard and has the server error
* reformat files. Not run ruff on migrations/ and .venv
---------
Co-authored-by: Son NK <son@simplelogin.io>
* Sanitize alias, contacts, mailboxes and users before creating them
* Updated comments and moved crons to run when load is low
* Run the stats at the same time as previously
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>