2025-04-21 11:56:29 +00:00
|
|
|
{% extends "base.html" %}
|
|
|
|
{% block content %}
|
2025-05-03 09:37:42 +00:00
|
|
|
<div class="row justify-content-center">
|
|
|
|
<div class="col-md-6 col-lg-4">
|
|
|
|
<h1 class="mb-4">{{ _('Login') }}</h1>
|
|
|
|
<form method="POST" aria-label="{{ _('Login form') }}" autocomplete="on">
|
|
|
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
|
|
|
<div class="mb-3">
|
|
|
|
<label for="username" class="form-label">{{ _('Username') }} <span aria-hidden="true" class="text-danger">*</span></label>
|
|
|
|
<input type="text"
|
|
|
|
id="username"
|
|
|
|
name="username"
|
|
|
|
class="form-control"
|
|
|
|
required
|
|
|
|
autocomplete="username"
|
|
|
|
aria-required="true"
|
|
|
|
autofocus>
|
|
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
|
|
<label for="password" class="form-label">{{ _('Password') }} <span aria-hidden="true" class="text-danger">*</span></label>
|
|
|
|
<input type="password"
|
|
|
|
id="password"
|
|
|
|
name="password"
|
|
|
|
class="form-control"
|
|
|
|
required
|
|
|
|
autocomplete="current-password"
|
|
|
|
aria-required="true">
|
|
|
|
</div>
|
|
|
|
{% if error %}
|
|
|
|
<div class="alert alert-danger" role="alert">
|
|
|
|
{{ error }}
|
|
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
<button type="submit" class="btn btn-primary w-100">{{ _('Login') }}</button>
|
|
|
|
</form>
|
|
|
|
<div class="mt-3 text-center">
|
|
|
|
<a href="{{ url_for('register') }}">{{ _('No account? Register here!') }}</a>
|
2025-04-21 11:56:29 +00:00
|
|
|
</div>
|
2025-05-03 09:37:42 +00:00
|
|
|
</div>
|
2025-04-21 11:56:29 +00:00
|
|
|
</div>
|
|
|
|
{% endblock %}
|
2025-04-26 12:32:07 +00:00
|
|
|
|
2025-05-03 09:37:42 +00:00
|
|
|
|