Source code for reporting.users.views
"""
User management
"""
# Application-specific imports
from django.conf import settings
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import redirect, render
from django.urls import reverse
from reporting.users.view_util import fill_template_values
[docs]
def perform_login(request):
"""
Perform user authentication
"""
user = None
login_failure = None
if request.method == "POST":
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(username=username, password=password)
if user is not None and not user.is_anonymous:
# use common username in test mode
# this ignores the username/password in the webapp
if settings.TEST_REMOTE_USER and settings.TEST_REMOTE_PASSWD:
username = settings.TEST_REMOTE_USER
password = settings.TEST_REMOTE_PASSWD
login(request, user)
else:
login_failure = "Invalid username or password"
if request.user.is_authenticated:
# If we came from a given page and just needed
# authentication, go back to that page.
if "next" in request.GET:
redirect_url = request.GET["next"]
return redirect(redirect_url)
return redirect(reverse(settings.LANDING_VIEW))
else:
# Breadcrumbs
breadcrumbs = "<a href='%s'>home</a> › login" % reverse(settings.LANDING_VIEW)
template_values = {"breadcrumbs": breadcrumbs, "login_failure": login_failure}
template_values = fill_template_values(request, **template_values)
return render(request, "users/authenticate.html", template_values)
[docs]
def perform_logout(request):
"""
Logout user
"""
logout(request)
return redirect(reverse(settings.LANDING_VIEW))