* Accounts to be scheduled to be deleted cannot receive emails or login
* Create model and create migration for user
* Add test for the cron function
* Move logic to one place
* Use the class name to call the static delete method
* 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>
* Fix: For badly formatted messages use MIMEText
* Fix: For badly formatted messages use MIMEText
* fix test
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Fix: If default domain is premium for free users do not offer it as an option
* Refactored into simpler logic
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Show the default domain in the suffixes even if it's not allowed
* Simplify logic
* Reformat
* Simplified logic
* Remove unused function
* Added test to validate suffixes
* Ensure we catch prefixes in test
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Add toggle to check if a user is premium without the partner subscription
* fix test
* Parter created users do not have a newsletter alias id
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Reset all password tokens on password reset
* Added csrf validation on email change request and validation
* Return the same wether is a valid email or not
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* update some dependencies: newrelic, gevent
that isn't compatible with python 3.11 on mac
* update package-lock using npm 9.6.4 and node 20.0
* Add GET /api/stats
* update pytest
---------
Co-authored-by: Son Nguyen Kim <son@Sons-MacBook-Air-2.local>
* Use the alias domain for contacts
* Check there are not duplicate emails
* Check also in trash
* Use helper
* Set VERP for the forward phase to the contact domain
* Add pgp_fingerprint as index for contacts
* Removed check trash
* Only use reply domains for sl domains
* Configure via db wether the domain can be used as a reverse_domain
* Fix: typo
* reverse logic
* fix migration
* fix test
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
Co-authored-by: Son <nguyenkims@users.noreply.github.com>
* Add Partner only domains
* Add hidden domain to the test and revert to default domains after the tests
* Send what to show in each call
* Fix: Pass none instead of false
* Removed flag from partnerusr
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Feat: Use only sfw words with a number suffix
* Updated also custom aliases to have a number suffix
* do not use _ as separator
* use _ as separator for words-based suffix
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
Co-authored-by: Son <nguyenkims@users.noreply.github.com>
* Do not allow to use email alias as account email when linking
* Add missing status
* Remove TODO
* Also break contact as email loop
* Better test names
* Allow a reverse alias to send an email to an alias
* Ident fix
* Removed invalid test
---------
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Set up npm clean install instead of npm install in order to keep the version of npm packages 🎨
* Add option to transfer the alias to a new mailbox when a mailbox is deleted
* Moved alias transfer to job
* Lint
* Update forms
* Revert dockerfile change
Co-authored-by: ewen <ewen.coppens@a1.digital>
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Feat: Add unsub oneclick to the base transactional email template
* Format
* Removed unused
* Format
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Use canonical email for registration, check both when checking if user exists
* Fix test
* Set pagesize to 100
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>
* Export alias in csv
* reformating
* template
* Improved contributing script and doc
* Updated test
* removed csv export from GDPR export archive
* added test for new route
* fix trailing space
* moved test to new utils file
* Fix: When re-sending emails if they trigger exceptions move out of failed dir
* Use proper timeout
* Lint
Co-authored-by: Adrià Casajús <adria.casajus@proton.ch>