Usability improvements to registration/verification workflow. This requires additional testing.

This commit is contained in:
zotlabs 2018-01-27 12:51:48 -08:00
parent 4eead1c688
commit bd0f63980b
4 changed files with 106 additions and 2 deletions

View file

@ -0,0 +1,48 @@
<?php
namespace Zotlabs\Module;
class Email_resend extends \Zotlabs\Web\Controller {
function post() {
if($_POST['token']) {
if(! account_approve(trim($_POST['token']))) {
notice('Token verification failed.')
}
}
}
function get() {
if(argc() > 1) {
$result = false;
$email = hex2bin(argv(1));
if($email) {
$result = verify_email_address( [ 'resend' => true, 'email' => $email ] );
}
if($result) {
notice(t('Email verification resent'));
}
else {
notice(t('Unable to resend email verification message.'));
}
return;
}
// @todo - one can provide a form here to resend the mail
// after directing to here if a succesful login was attempted from an unverified address.
}
}

View file

@ -0,0 +1,38 @@
<?php
namespace Zotlabs\Module;
class Email_validation extends \Zotlabs\Web\Controller {
function post() {
if($_POST['token']) {
if(! account_approve(trim($_POST['token']))) {
notice('Token verification failed.');
}
}
}
function get() {
if(argc() > 1) {
$email = hex2bin(argv(1));
}
$o = replace_macros(get_markup_template('email_validation.tpl'), [
'$title' => t('Email Verification Required'),
'$desc' => sprintf( t('A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message.'),$email),
'$resend' => t('Resend Email'),
'$email' => bin2hex($email),
'$submit' => t('Submit'),
'$token' => [ 'token', t('Validation token'),'','' ],
]);
return $o;
}
}

View file

@ -150,9 +150,11 @@ class Register extends \Zotlabs\Web\Controller {
}
if($email_verify) {
goaway(z_root());
goaway(z_root() . '/email_validation/' . bin2hex($result['email']));
}
// fall through and authenticate if no approvals or verifications were required.
authenticate_success($result['account'],null,true,false,true);
$new_channel = false;

View file

@ -0,0 +1,16 @@
<h2>{{$title}}</h2>
<div class="descriptive-paragraph" style="font-size: 1.2em;"><p>{{$desc}}</p></div>
<form action="email_validation" method="post">
{{include file="field_input.tpl" field=$token}}
<div class="pull-right">
<a href="email_resend/{{$email}}" class="btn btn-warning">{{$resend}}</a>
</div>
<div class="submit-wrapper" >
<button type="submit" name="submit" class="btn btn-primary">{{$submit}}</button>
</div>
</form>
<div class="clear"></div>