mirror of
https://github.com/lightningcell/flask-2fa-auth.git
synced 2026-05-26 07:08:07 +00:00
109 lines
4.6 KiB
HTML
109 lines
4.6 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block content %}
|
|
<div class="row justify-content-center">
|
|
<div class="col-md-6">
|
|
<div class="auth-form">
|
|
<h2 class="text-center mb-4">
|
|
<i class="bi bi-person-plus"></i> Create Account
|
|
</h2>
|
|
|
|
<div class="security-notice">
|
|
<strong>Security Notice:</strong> Your password will be securely hashed using bcrypt.
|
|
Two-factor authentication will be automatically enabled for enhanced security.
|
|
</div>
|
|
|
|
<form method="POST" novalidate>
|
|
{{ form.hidden_tag() }}
|
|
|
|
<!-- Username field -->
|
|
<div class="mb-3">
|
|
{{ form.username.label(class="form-label") }}
|
|
{{ form.username(class="form-control" + (" is-invalid" if form.username.errors else "")) }}
|
|
{% if form.username.errors %}
|
|
<div class="invalid-feedback">
|
|
{% for error in form.username.errors %}
|
|
{{ error }}
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
<div class="form-text">3-20 characters, alphanumeric only</div>
|
|
</div>
|
|
|
|
<!-- Email field -->
|
|
<div class="mb-3">
|
|
{{ form.email.label(class="form-label") }}
|
|
{{ form.email(class="form-control" + (" is-invalid" if form.email.errors else "")) }}
|
|
{% if form.email.errors %}
|
|
<div class="invalid-feedback">
|
|
{% for error in form.email.errors %}
|
|
{{ error }}
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<!-- Password field -->
|
|
<div class="mb-3">
|
|
{{ form.password.label(class="form-label") }}
|
|
{{ form.password(class="form-control" + (" is-invalid" if form.password.errors else "")) }}
|
|
{% if form.password.errors %}
|
|
<div class="invalid-feedback">
|
|
{% for error in form.password.errors %}
|
|
{{ error }}
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
<div class="form-text">Minimum 8 characters</div>
|
|
</div>
|
|
|
|
<!-- Confirm password field -->
|
|
<div class="mb-3">
|
|
{{ form.password2.label(class="form-label") }}
|
|
{{ form.password2(class="form-control" + (" is-invalid" if form.password2.errors else "")) }}
|
|
{% if form.password2.errors %}
|
|
<div class="invalid-feedback">
|
|
{% for error in form.password2.errors %}
|
|
{{ error }}
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<!-- Submit button -->
|
|
<div class="d-grid">
|
|
{{ form.submit(class="btn btn-primary btn-lg") }}
|
|
</div>
|
|
</form>
|
|
|
|
<hr class="my-4">
|
|
|
|
<div class="text-center">
|
|
<p>Already have an account?
|
|
<a href="{{ url_for('auth.login') }}" class="text-decoration-none">Sign in here</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mt-4">
|
|
<div class="col-md-8 offset-md-2">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h5><i class="bi bi-info-circle"></i> Security Features</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<ul class="list-unstyled">
|
|
<li><i class="bi bi-check-circle text-success"></i> Passwords are hashed using bcrypt with salt</li>
|
|
<li><i class="bi bi-check-circle text-success"></i> CSRF protection on all forms</li>
|
|
<li><i class="bi bi-check-circle text-success"></i> Two-factor authentication required</li>
|
|
<li><i class="bi bi-check-circle text-success"></i> Secure session management</li>
|
|
<li><i class="bi bi-check-circle text-success"></i> Input validation and sanitization</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|