More password validation.
Clean up login and create_account routes. Macro-ize form submit buttons.
This commit is contained in:
parent
d2b2d860cf
commit
9d15924d60
|
@ -108,8 +108,6 @@ def render_index(
|
|||
|
||||
@writing_blueprint.route('/login', methods=['POST', 'GET'])
|
||||
def login() -> Response | str:
|
||||
if request.form.get('confirm-password'):
|
||||
return create_account()
|
||||
if request.method == 'POST':
|
||||
username = request.form['login']
|
||||
if db.login(username, request.form['password']):
|
||||
|
@ -120,6 +118,29 @@ def login() -> Response | str:
|
|||
return render_index(status=404)
|
||||
|
||||
|
||||
@writing_blueprint.route('/create_account', methods=['POST'])
|
||||
def create_account() -> Response:
|
||||
email_address = request.form['login']
|
||||
password = request.form['password']
|
||||
|
||||
if password != request.form['confirm-password']:
|
||||
return render_index(error="Password and confirm password must match!", status=400)
|
||||
if 64 < len(password) < 8:
|
||||
return render_index(error="Password must be between 8 and 64 characters", status=400)
|
||||
|
||||
try:
|
||||
validate_email(email_address, check_deliverability=True)
|
||||
except EmailNotValidError as e:
|
||||
return render_index(error=str(e), status=400)
|
||||
|
||||
if db.get_user(email_address):
|
||||
return render_index(error="A user with that email already exists!", status=400)
|
||||
|
||||
db.add_user(email_address, password)
|
||||
session['username'] = email_address
|
||||
return redirect('/')
|
||||
|
||||
|
||||
@writing_blueprint.route('/logout', methods=['POST', 'GET'])
|
||||
def logout() -> Response:
|
||||
session.pop('username', None)
|
||||
|
@ -185,22 +206,6 @@ def index_get() -> Response:
|
|||
return render_index(form=form)
|
||||
|
||||
|
||||
@writing_blueprint.route('/create_account', methods=['POST'])
|
||||
def create_account() -> Response:
|
||||
email_address = request.form['login']
|
||||
try:
|
||||
validate_email(email_address, check_deliverability=True)
|
||||
except EmailNotValidError as e:
|
||||
return render_index(error=str(e), status=401)
|
||||
|
||||
if db.get_user(email_address):
|
||||
return render_index(error="A user with that email already exists!", status=401)
|
||||
|
||||
db.add_user(email_address, request.form['password'])
|
||||
session['username'] = email_address
|
||||
return redirect('/')
|
||||
|
||||
|
||||
@writing_blueprint.route('/reset', methods=['POST', 'GET'])
|
||||
def reset_password() -> Response | str:
|
||||
if request.method == 'POST':
|
||||
|
|
|
@ -23,6 +23,18 @@
|
|||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro form_submit_button(text, id, action, errors) %}
|
||||
<a href="javascript:void(0)"
|
||||
id="{{ id }}"
|
||||
class="wipe up-wipe"
|
||||
{% if errors %}
|
||||
onclick="/*clearErrors();*/const e = document.getElementById('create-account-form'); e.action = '{{ action }}'; e.submit()"
|
||||
{% else %}
|
||||
onclick="const e = document.getElementById('create-account-form'); e.action = '{{ action }}'; e.submit()"
|
||||
{% endif %}
|
||||
>{{ text }}</a>
|
||||
{% endmacro %}
|
||||
|
||||
{% macro modal() %}
|
||||
<div id='modal' class='modal modal-background transparent' onclick="event.target.id === 'modal' && closeModal()">
|
||||
<div class='modal modal-content'>
|
||||
|
@ -44,25 +56,8 @@
|
|||
</div>
|
||||
|
||||
<div style="margin-top: 1em;">
|
||||
<a href="javascript:void(0)"
|
||||
id="create-account-form-button"
|
||||
class="wipe up-wipe"
|
||||
{% if errors %}
|
||||
onclick="/*clearErrors();*/document.getElementById('create-account-form').submit()"
|
||||
{% else %}
|
||||
onclick="document.getElementById('create-account-form').submit()"
|
||||
{% endif %}
|
||||
>Create Account</a>
|
||||
|
||||
<a href="javascript:void(0)"
|
||||
id="log-in-form-button"
|
||||
class="wipe up-wipe"
|
||||
{% if errors %}
|
||||
onclick="/*clearErrors();*/document.getElementById('create-account-form').submit()"
|
||||
{% else %}
|
||||
onclick="document.getElementById('create-account-form').submit()"
|
||||
{% endif %}
|
||||
>Log in</a>
|
||||
{{ form_submit_button('Create account', 'create-account-form-button', '/create_account', errors) }}
|
||||
{{ form_submit_button('Log in', 'log-in-form-button', '/login', errors) }}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue