Handle duplicate emails on confirmation and make the confirmation error page nicer

This commit is contained in:
Joseph Schorr 2014-01-17 17:20:51 -05:00
parent bd5ebe070b
commit c738113ca4
3 changed files with 26 additions and 3 deletions

View file

@ -358,8 +358,11 @@ def confirm_user_email(code):
new_email = code.new_email
if new_email:
if find_user_by_email(new_email):
raise DataModelException('E-mail address already used.')
user.email = new_email
user.save()
code.delete_instance()

View file

@ -259,8 +259,8 @@ def confirm_email():
try:
result = model.confirm_user_email(code)
except model.DataModelException as ex:
return redirect(url_for('signin'))
return render_page_template('confirmerror.html', error_message=ex.message)
common_login(result['user'])
return redirect(url_for('user', tab='email') if result['new_email'] else url_for('index'))

View file

@ -0,0 +1,20 @@
{% extends "base.html" %}
{% block title %}
<title>Confirmation error · Quay.io</title>
{% endblock %}
{% block body_content %}
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>There was an error confirming your e-mail address.</h2>
{% if error_message %}
<div class="alert alert-danger">{{ error_message }}</div>
{% endif %}
</div>
</div>
</div>
{% endblock %}