wuvt / wuvt-site

Website including a CMS, playlist information, and donation management tools
https://www.wuvt.vt.edu
GNU Affero General Public License v3.0
11 stars 12 forks source link

Can't login if using local auth in dev environment #365

Closed g-i-g closed 4 years ago

g-i-g commented 4 years ago

If following the local dev instructions in the readme, attempting to access localhost:9070/admin results in werkzeug.routing.BuildError:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/src/app/wuvt/auth/local_views.py", line 28, in login
    return render_template('auth/login.html', errors=errors)
  File "/usr/local/lib/python3.8/site-packages/flask/templating.py", line 137, in render_template
    return _render(
  File "/usr/local/lib/python3.8/site-packages/flask/templating.py", line 120, in _render
    rv = template.render(context)
  File "/usr/local/lib/python3.8/site-packages/jinja2/asyncsupport.py", line 76, in render
    return original_render(self, *args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 1008, in render
    return self.environment.handle_exception(exc_info, True)
  File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 780, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.8/site-packages/jinja2/_compat.py", line 37, in reraise
    raise value.with_traceback(tb)
  File "/usr/src/app/wuvt/templates/auth/login.html", line 2, in <module>
    {% set page_title="Login" %}
  File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 1005, in render
    return concat(self.root_render_func(self.new_context(vars)))
  File "/usr/src/app/wuvt/templates/auth/login.html", line 18, in root
    <input type="hidden" name="_csrf_token" value="{{ csrf_token() }}" />
  File "/usr/src/app/wuvt/templates/admin/base.html", line 36, in root
    {% if 'admin' in current_user_roles or config.AUTH_METHOD == "local" %}{% block nav_admin_users %}<li><a href="{{ url_for('admin.users') }}">Users</a></li>{% endblock %}{% endif %}
  File "/usr/src/app/wuvt/templates/auth/login.html", line 50, in block_content

  File "/usr/local/lib/python3.8/site-packages/flask/helpers.py", line 370, in url_for
    return appctx.app.handle_url_build_error(error, endpoint, values)
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2215, in handle_url_build_error
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.8/site-packages/flask/helpers.py", line 357, in url_for
    rv = url_adapter.build(
  File "/usr/local/lib/python3.8/site-packages/werkzeug/routing.py", line 2020, in build
    raise BuildError(endpoint, values, method, self)
werkzeug.routing.BuildError: Could not build url for endpoint 'auth.login'. Did you mean 'auth_local.login' instead?

The error lies within wuvt/templates/auth/login.html at the following line:

<form action="{{ url_for('auth.login') }}" method="post" class="form-signin">

The following appears to fix it:

{% if config.AUTH_METHOD == 'local' %}
<form action="{{ url_for('auth_local.login') }}" method="post" class="form-signin">
{% else %}
<form action="{{ url_for('auth.login') }}" method="post" class="form-signin">
{% endif %}