diff options
| author | 2019-08-29 12:02:05 +0200 | |
|---|---|---|
| committer | 2019-08-29 12:02:05 +0200 | |
| commit | 75632e70f0d49048f4ce72a0fa8bbcbcd7b2d312 (patch) | |
| tree | 09c2f637ceedb76a30ad833555f02c2d50ee4863 /lib | |
| parent | ad44ff81694ff4cbcccc514a17351476a38aadd8 (diff) | |
Provide email address verification feature (#2481)
* Add an email field to the profile page
I reuse the `mail_login` from the configuration. I'm not sure if it's
useful today (I would say it was used when Persona login was available).
A good improvement would be to rename `mail_login` into `email` so it
would be more intuitive to use.
* Add boolean to the conf to force email validation
This commit only adds a configuration item.
* Add email during registration if email must be validated
* Set email token to validate when email changes
* Block access to FreshRSS if email is not validated
* Send email when address is changed
* Allow to resend the validation email
* Allow the user to change its email while blocked
* Document the email validation feature
* fixup! Allow the user to change its email while blocked
* tec: Autoload PHPMailer lib
* Validate email address format
* Add feedback on validation email resend action
* Allow to logout when user is blocked
* fix: Change default email "from"
* Reorganize i18n keys
* Complete all the locales with default english
* Hide sidebar (profile page) if email is not validated
* Check email requirements on registration
* Allow admin to specify email when creating users
* Don't check email format if value is empty
* Remove trailing comma in userController
Co-Authored-By: Alexandre Alapetite <alexandre@alapetite.fr>
* Set PHPMailer validator to html5 before sending email
* fixup! Remove trailing comma in userController
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Minz/Mailer.php | 6 | ||||
| -rw-r--r-- | lib/Minz/Request.php | 7 | ||||
| -rw-r--r-- | lib/PHPMailer/PHPMailer/Exception.php (renamed from lib/PHPMailer/Exception.php) | 0 | ||||
| -rw-r--r-- | lib/PHPMailer/PHPMailer/PHPMailer.php (renamed from lib/PHPMailer/PHPMailer.php) | 0 | ||||
| -rw-r--r-- | lib/PHPMailer/PHPMailer/SMTP.php (renamed from lib/PHPMailer/SMTP.php) | 0 | ||||
| -rw-r--r-- | lib/lib_rss.php | 16 |
6 files changed, 25 insertions, 4 deletions
diff --git a/lib/Minz/Mailer.php b/lib/Minz/Mailer.php index 0e88f71d9..04392982b 100644 --- a/lib/Minz/Mailer.php +++ b/lib/Minz/Mailer.php @@ -3,10 +3,6 @@ use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; -require LIB_PATH . '/PHPMailer/PHPMailer.php'; -require LIB_PATH . '/PHPMailer/Exception.php'; -require LIB_PATH . '/PHPMailer/SMTP.php'; - /** * Allow to send emails. * @@ -78,6 +74,8 @@ class Minz_Mailer { $body = ob_get_contents(); ob_end_clean(); + PHPMailer::$validator = 'html5'; + $mail = new PHPMailer(true); try { // Server settings diff --git a/lib/Minz/Request.php b/lib/Minz/Request.php index 912c354ac..01feece52 100644 --- a/lib/Minz/Request.php +++ b/lib/Minz/Request.php @@ -98,6 +98,13 @@ class Minz_Request { self::initJSON(); } + public static function is($controller_name, $action_name) { + return ( + self::$controller_name === $controller_name && + self::$action_name === $action_name + ); + } + /** * Return true if the request is over HTTPS, false otherwise (HTTP) */ diff --git a/lib/PHPMailer/Exception.php b/lib/PHPMailer/PHPMailer/Exception.php index 9a05dec3c..9a05dec3c 100644 --- a/lib/PHPMailer/Exception.php +++ b/lib/PHPMailer/PHPMailer/Exception.php diff --git a/lib/PHPMailer/PHPMailer.php b/lib/PHPMailer/PHPMailer/PHPMailer.php index 52104924d..52104924d 100644 --- a/lib/PHPMailer/PHPMailer.php +++ b/lib/PHPMailer/PHPMailer/PHPMailer.php diff --git a/lib/PHPMailer/SMTP.php b/lib/PHPMailer/PHPMailer/SMTP.php index da85442bf..da85442bf 100644 --- a/lib/PHPMailer/SMTP.php +++ b/lib/PHPMailer/PHPMailer/SMTP.php diff --git a/lib/lib_rss.php b/lib/lib_rss.php index 2706ff606..03cfb82ad 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -55,6 +55,8 @@ function classAutoloader($class) { include(LIB_PATH . '/' . str_replace('_', '/', $class) . '.php'); } elseif (strpos($class, 'SimplePie') === 0) { include(LIB_PATH . '/SimplePie/' . str_replace('_', '/', $class) . '.php'); + } elseif (strpos($class, 'PHPMailer') === 0) { + include(LIB_PATH . '/' . str_replace('\\', '/', $class) . '.php'); } } @@ -278,6 +280,20 @@ function sanitizeHTML($data, $base = '') { } /** + * Validate an email address, supports internationalized addresses. + * + * @param string $email The address to validate + * + * @return bool true if email is valid, else false + */ +function validateEmailAddress($email) { + $mailer = new PHPMailer\PHPMailer\PHPMailer(); + $mailer->Charset = 'utf-8'; + $punyemail = $mailer->punyencodeAddress($email); + return PHPMailer\PHPMailer\PHPMailer::validateAddress($punyemail, 'html5'); +} + +/** * Add support of image lazy loading * Move content from src attribute to data-original * @param content is the text we want to parse |
