jacksoneshbaugh / ScavengerSurvey

GNU General Public License v3.0
1 stars 1 forks source link

Need to check if user is anonymous before attempting to get attribute `id` #5

Open snorklerjoe opened 3 months ago

snorklerjoe commented 3 months ago

Error:

Traceback (most recent call last):   File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 1463, in wsgi_app     response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 872, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 870, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 855, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/app/bingo_survey/routes.py", line 129, in bingo_board
    db.session.execute(db.select(SurveyResponse).where(SurveyResponse.user_id == current_user.id,
                                                                                 ^^^^^^^^^^^^^^^
AttributeError: 'AnonymousUserMixin' object has no attribute 'id'
jacksoneshbaugh commented 3 months ago

No user should be anonymous, that property always returns false. This is odd.

snorklerjoe commented 3 months ago

Not odd. See the docs: By default, when a user is not actually logged in, [current_user](https://flask-login.readthedocs.io/en/latest/#flask_login.current_user) is set to an [AnonymousUserMixin](https://flask-login.readthedocs.io/en/latest/#flask_login.AnonymousUserMixin) object. It has the following properties and methods: