aboutsummaryrefslogtreecommitdiff
path: root/app/views/user
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 /app/views/user
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 'app/views/user')
-rw-r--r--app/views/user/manage.phtml11
-rw-r--r--app/views/user/profile.phtml13
-rw-r--r--app/views/user/validateEmail.phtml22
3 files changed, 45 insertions, 1 deletions
diff --git a/app/views/user/manage.phtml b/app/views/user/manage.phtml
index d0e5928ef..501257e5b 100644
--- a/app/views/user/manage.phtml
+++ b/app/views/user/manage.phtml
@@ -26,6 +26,17 @@
</div>
</div>
+ <?php if ($this->show_email_field) { ?>
+ <div class="form-group">
+ <label class="group-name" for="new_user_email">
+ <?php echo _t('gen.auth.email'); ?>
+ </label>
+ <div class="group-controls">
+ <input id="new_user_email" name="new_user_email" type="email" required />
+ </div>
+ </div>
+ <?php } ?>
+
<div class="form-group">
<label class="group-name" for="new_user_passwordPlain"><?php echo _t('admin.user.password_form'); ?></label>
<div class="group-controls">
diff --git a/app/views/user/profile.phtml b/app/views/user/profile.phtml
index 83140376d..87aa25b11 100644
--- a/app/views/user/profile.phtml
+++ b/app/views/user/profile.phtml
@@ -1,4 +1,8 @@
-<?php $this->partial('aside_configure'); ?>
+<?php
+ if (!$this->disable_aside) {
+ $this->partial('aside_configure');
+ }
+?>
<div class="post">
<a href="<?php echo _url('index', 'index'); ?>"><?php echo _t('gen.action.back_to_rss_feeds'); ?></a>
@@ -19,6 +23,13 @@
</div>
<div class="form-group">
+ <label class="group-name" for="email"><?php echo _t('conf.profile.email'); ?></label>
+ <div class="group-controls">
+ <input id="email" name="email" type="email" value="<?php echo FreshRSS_Context::$user_conf->mail_login; ?>" />
+ </div>
+ </div>
+
+ <div class="form-group">
<label class="group-name" for="newPasswordPlain"><?php echo _t('conf.profile.password_form'); ?></label>
<div class="group-controls">
<div class="stick">
diff --git a/app/views/user/validateEmail.phtml b/app/views/user/validateEmail.phtml
new file mode 100644
index 000000000..a246c222e
--- /dev/null
+++ b/app/views/user/validateEmail.phtml
@@ -0,0 +1,22 @@
+<div class="post">
+ <p>
+ <?php echo _t('user.email.validation.need_to', FreshRSS_Context::$system_conf->title); ?>
+ </p>
+
+ <p>
+ <?php echo _t('user.email.validation.email_sent_to', FreshRSS_Context::$user_conf->mail_login); ?>
+ </p>
+
+ <form action="<?php echo _url('user', 'sendValidationEmail'); ?>" method="post">
+ <input type="hidden" name="_csrf" value="<?php echo FreshRSS_Auth::csrfToken(); ?>" />
+ <button type="submit" class="btn">
+ <?php echo _t('user.email.validation.resend_email'); ?>
+ </button>
+ </form>
+
+ <p>
+ <small>
+ <?php echo _t('user.email.validation.change_email', _url('user', 'profile')); ?>
+ </small>
+ </p>
+</div>