aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2019-08-29 12:02:05 +0200
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2019-08-29 12:02:05 +0200
commit75632e70f0d49048f4ce72a0fa8bbcbcd7b2d312 (patch)
tree09c2f637ceedb76a30ad833555f02c2d50ee4863 /lib
parentad44ff81694ff4cbcccc514a17351476a38aadd8 (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.php6
-rw-r--r--lib/Minz/Request.php7
-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.php16
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