only show mobile number on register from invite page if user is sms_auth

also clean up the way the form is invoked - it now populates from an
invited_user object
This commit is contained in:
Leo Hemsted
2017-11-14 15:53:38 +00:00
parent c8dbd819ef
commit 8c14113da5
5 changed files with 37 additions and 12 deletions

View File

@@ -176,6 +176,13 @@ class RegisterUserForm(Form):
class RegisterUserFromInviteForm(Form):
def __init__(self, invited_user):
super().__init__(
service=invited_user['service'],
email_address=invited_user['email_address'],
auth_type=invited_user['auth_type'],
)
name = StringField(
'Full name',
validators=[DataRequired(message='Cant be empty')]

View File

@@ -46,24 +46,23 @@ def register_from_invite():
if not invited_user:
abort(404)
form = RegisterUserFromInviteForm()
is_sms_auth = invited_user['auth_type'] == 'sms_auth'
form = RegisterUserFromInviteForm(invited_user)
if form.validate_on_submit():
if form.service.data != invited_user['service'] or form.email_address.data != invited_user['email_address']:
abort(400)
_do_registration(form, send_email=False, send_sms=invited_user['auth_type'] == 'sms_auth')
_do_registration(form, send_email=False, send_sms=is_sms_auth)
invite_api_client.accept_invite(invited_user['service'], invited_user['id'])
if invited_user['auth_type'] == 'sms_auth':
if is_sms_auth:
return redirect(url_for('main.verify'))
else:
# we've already proven this user has email because they clicked the invite link,
# so just activate them straight away
return activate_user(session['user_details']['id'])
form.service.data = invited_user['service']
form.email_address.data = invited_user['email_address']
return render_template('views/register-from-invite.html', email_address=invited_user['email_address'], form=form)
return render_template('views/register-from-invite.html', invited_user=invited_user, form=form)
def _do_registration(form, send_sms=True, send_email=True):

View File

@@ -11,16 +11,19 @@ Create an account
<div class="grid-row">
<div class="column-two-thirds">
<h1 class="heading-large">Create an account</h1>
<p>Your account will be created with this email: {{email_address}}</p>
<p>Your account will be created with this email: {{invited_user.email_address}}</p>
<form method="post" autocomplete="off">
{{ textbox(form.name, width='3-4') }}
<div class="extra-tracking">
{{ textbox(form.mobile_number, width='3-4', hint='Well send you a security code by text message') }}
</div>
{% if invited_user.auth_type == 'sms_auth' %}
<div class="extra-tracking">
{{ textbox(form.mobile_number, width='3-4', hint='Well send you a security code by text message') }}
</div>
{% endif %}
{{ textbox(form.password, hint="At least 8 characters", width='3-4') }}
{{ page_footer("Continue") }}
{{form.service}}
{{form.email_address}}
{{form.auth_type}}
</form>
</div>
</div>