def handle_login()

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,
    })