Compare commits

..

1 Commits

Author SHA1 Message Date
Jonas Schäfer
4bd58c1104 Add autocomplete hints to password forms
This allows user agents to do smart things like filling in the current
password only where it makes sense or integrate nicely with a password
manager.

Fixes #94.
2022-01-22 15:34:27 +01:00
7 changed files with 11 additions and 10 deletions

View File

@@ -5,5 +5,5 @@ hsluv~=0.0.2
flask-babel~=1.0 flask-babel~=1.0
email-validator~=1.1 email-validator~=1.1
environ-config~=20.0 environ-config~=20.0
wtforms~=3.0 wtforms~=2.3
typing-extensions typing-extensions

View File

@@ -10,6 +10,7 @@ import aiohttp
import quart.flask_patch import quart.flask_patch
import wtforms import wtforms
import wtforms.fields.html5
from quart import ( from quart import (
Blueprint, Blueprint,

View File

@@ -32,7 +32,7 @@ bp = quart.Blueprint("main", __name__)
class LoginForm(BaseForm): class LoginForm(BaseForm):
address = wtforms.StringField( address = wtforms.TextField(
_l("Address"), _l("Address"),
validators=[wtforms.validators.InputRequired()], validators=[wtforms.validators.InputRequired()],
) )

View File

@@ -28,12 +28,12 @@
</div> </div>
<div class="f-ebox"> <div class="f-ebox">
{{ form.password.label }} {{ form.password.label }}
{{ form.password }} {{ form.password(autocomplete="new-password") }}
<p class="field-desc weak">{% trans %}Enter a secure password that you do not use anywhere else.{% endtrans %}</p> <p class="field-desc weak">{% trans %}Enter a secure password that you do not use anywhere else.{% endtrans %}</p>
</div> </div>
<div class="f-ebox"> <div class="f-ebox">
{{ form.password_confirm.label }} {{ form.password_confirm.label }}
{{ form.password_confirm }} {{ form.password_confirm(autocomplete="new-password") }}
</div> </div>
<div class="f-bbox"> <div class="f-bbox">
{%- call form_button("done", form.action_register, class="primary") -%}{%- endcall -%} {%- call form_button("done", form.action_register, class="primary") -%}{%- endcall -%}

View File

@@ -17,11 +17,11 @@
{%- call render_errors(form) %}{% endcall -%} {%- call render_errors(form) %}{% endcall -%}
<div class="f-ebox"> <div class="f-ebox">
{{ form.password.label }} {{ form.password.label }}
{{ form.password }} {{ form.password(autocomplete="new-password") }}
</div> </div>
<div class="f-ebox"> <div class="f-ebox">
{{ form.password_confirm.label }} {{ form.password_confirm.label }}
{{ form.password_confirm }} {{ form.password_confirm(autocomplete="new-password") }}
</div> </div>
<div class="f-bbox"> <div class="f-bbox">
{%- call form_button("passwd", form.action_reset, class="primary") -%}{%- endcall -%} {%- call form_button("passwd", form.action_reset, class="primary") -%}{%- endcall -%}

View File

@@ -9,15 +9,15 @@
{%- endcall -%} {%- endcall -%}
<div class="f-ebox"> <div class="f-ebox">
{{ form.current_password.label(class="required") }} {{ form.current_password.label(class="required") }}
{{ form.current_password(class=("has-error" if form.current_password.name in form.errors else "")) }} {{ form.current_password(class=("has-error" if form.current_password.name in form.errors else ""), autocomplete="current-password") }}
</div> </div>
<div class="f-ebox"> <div class="f-ebox">
{{ form.new_password.label(class="required") }} {{ form.new_password.label(class="required") }}
{{ form.new_password }} {{ form.new_password(autocomplete="new-password") }}
</div> </div>
<div class="f-ebox"> <div class="f-ebox">
{{ form.new_password_confirm.label(class="required") }} {{ form.new_password_confirm.label(class="required") }}
{{ form.new_password_confirm(class=("has-error" if form.new_password_confirm.name in form.errors else "")) }} {{ form.new_password_confirm(class=("has-error" if form.new_password_confirm.name in form.errors else ""), autocomplete="new-password") }}
</div> </div>
<div class="box warning"> <div class="box warning">
<header>{% trans %}Warning{% endtrans %}</header> <header>{% trans %}Warning{% endtrans %}</header>

View File

@@ -59,7 +59,7 @@ _ACCESS_MODEL_CHOICES = [
class ProfileForm(BaseForm): class ProfileForm(BaseForm):
nickname = wtforms.StringField( nickname = wtforms.TextField(
_l("Display name"), _l("Display name"),
) )