diff --git a/mo/web/fields.py b/mo/web/fields.py
index e6f21da098528f367c161d9421dc366ee78b8135..1e2305093c5faa509b6594ba83624b5a3fc4eedb 100644
--- a/mo/web/fields.py
+++ b/mo/web/fields.py
@@ -138,3 +138,24 @@ class School(Place):
                 field.place = mo.users.validate_and_find_school(field.data)
             except mo.CheckError as e:
                 field.place_error = str(e)
+
+
+class NewPassword(wtforms.PasswordField):
+    def __init__(self, label="Nové heslo", validators=None, **kwargs):
+        super().__init__(label, validators, **kwargs)
+
+    def pre_validate(field, form):
+        if field.data:
+            if not mo.users.validate_password(field.data):
+                raise wtforms.ValidationError(mo.users.password_help)
+
+
+class RepeatPassword(wtforms.PasswordField):
+    """Pro validaci hledá ve formuláři form.new_passwd a s ním porovnává."""
+
+    def __init__(self, label="Zopakujte heslo", validators=None, **kwargs):
+        super().__init__(label, validators, **kwargs)
+
+    def pre_validate(field, form):
+        if field.data != form.new_passwd.data:
+            raise wtforms.ValidationError('Hesla se neshodují.')