Flask-Middleware / flask-security

Quick and simple security for Flask applications
MIT License
624 stars 155 forks source link

Login doesn't work because of a TypeError #937

Closed sr-verde closed 4 months ago

sr-verde commented 4 months ago

Login to my application on Flask-Security-Too’s current master branch doesn't work anymore. I’ll get the following traceback:

Traceback (most recent call last):
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask/app.py", line 2213, in __call__
    return self.wsgi_app(environ, start_response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask/app.py", line 2193, in wsgi_app
    response = self.handle_exception(e)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask/app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask/app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask/app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask/app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask_security/decorators.py", line 471, in decorated
    return current_app.ensure_sync(fn)(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask_security/views.py", line 190, in login
    if form.validate_on_submit():
       ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask_wtf/form.py", line 86, in validate_on_submit
    return self.is_submitted() and self.validate(extra_validators=extra_validators)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask_security/forms.py", line 532, in validate
    if not super().validate(**kwargs):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/wtforms/form.py", line 329, in validate
    return super().validate(extra)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/wtforms/form.py", line 146, in validate
    if not field.validate(self, extra):
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/wtforms/fields/core.py", line 246, in validate
    stop_validation = self._run_validation_chain(form, chain)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/wtforms/fields/core.py", line 266, in _run_validation_chain
    validator(form, self)
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask_security/forms.py", line 168, in __call__
    field.data = _security._mail_util.normalize(field.data)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/.cache/pypoetry/virtualenvs/xyz-21ts77nC-py3.11/lib/python3.11/site-packages/flask_security/mail_util.py", line 132, in normalize
    validator_args["check_deliverability"] = False
TypeError: 'NoneType' object does not support item assignment

I will submit a pull request to resolve this issue.