in django_airavata/apps/auth/views.py [0:0]
def handle_login(request):
# This view handles a POST of the login form. If the request is a GET, just
# redirect to the login page.
if request.method == 'GET':
return redirect(reverse('django_airavata_auth:login'))
username = request.POST['username']
password = request.POST['password']
login_type = request.POST.get('login_type', None)
login_desktop = request.POST.get('login_desktop', "false") == "true"
download_code = request.POST.get('download-code', 'false') == "true"
show_code = request.POST.get('show-code', 'false') == "true"
template = "django_airavata_auth/login.html"
if login_type and login_type == 'password':
template = "django_airavata_auth/login_username_password.html"
user = authenticate(username=username, password=password, request=request)
logger.debug("authenticated user: {}".format(user))
try:
if user is not None:
# Middleware will add authz_token attr to request, but since user
# just authenticated, authz_token won't be added yet. Login signals
# need the authz_token so adding it to the request now.
request.authz_token = utils.get_authz_token(request, user=user)
login(request, user)
if login_desktop:
return _create_login_desktop_success_response(request,
download_code=download_code,
show_code=show_code)
else:
next_url = request.POST.get('next',
settings.LOGIN_REDIRECT_URL)
return redirect(next_url)
else:
messages.error(request, "Login failed. Please try again.")
except Exception as err:
logger.exception("Login failed for user {}".format(username), extra={'request': request})
messages.error(request,
"Login failed: {}. Please try again.".format(str(err)))
if login_desktop:
return _create_login_desktop_failed_response(request)
return render(request, template, {
'username': username,
'next': request.POST.get('next', None),
'options': settings.AUTHENTICATION_OPTIONS,
'login_type': login_type,
})