[PATCH conductor] BZ 858997 - Fix AJAX error handling
Jirka Tomasek
jtomasek at redhat.com
Fri Sep 21 12:09:19 UTC 2012
On 09/21/2012 12:31 AM, Matt Wagner wrote:
> A recent patch for the login page broke our handling of 401s
> on AJAX responses. That has an easy fix, but broke the login
> page's error-handling.
>
> This fix modifies the login page to handle 401s. It's the most
> elegant fix I could find at this time -- ideally we should pull
> some part of this 401 handling up to converge-ui but that is
> out of scope for today.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=858997
> ---
> src/app/controllers/user_sessions_controller.rb | 2 +-
> src/app/views/user_sessions/new.html.haml | 15 ++++++++++++++-
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/src/app/controllers/user_sessions_controller.rb b/src/app/controllers/user_sessions_controller.rb
> index 8f3385d..ac0607f 100644
> --- a/src/app/controllers/user_sessions_controller.rb
> +++ b/src/app/controllers/user_sessions_controller.rb
> @@ -48,7 +48,7 @@ class UserSessionsController < ApplicationController
> format.xml { head :unauthorized }
> flash.now[:warning] = t "user_sessions.flash.warning.login_failed"
> format.html { render :action => :new }
> - format.js { render :layout => false }
> + format.js { head :unauthorized }
> end
> end
>
> diff --git a/src/app/views/user_sessions/new.html.haml b/src/app/views/user_sessions/new.html.haml
> index ec04542..b195b1b 100644
> --- a/src/app/views/user_sessions/new.html.haml
> +++ b/src/app/views/user_sessions/new.html.haml
> @@ -17,10 +17,23 @@
> = "| #{@title}" unless @title.blank?
>
> = content_for :notifications do
> - = render :partial => 'notifications' if flash[:warning].present?
> + %div.error.hidden
> + %p.text= t("user_sessions.flash.warning.login_failed")
error message is not displayed when JS is turned off.
>
> = content_for :login_logo do
> = image_tag 'login-card-logo-upstream.png'
>
> = content_for :footer do
> = render :partial => 'layouts/footer'
> +
> += content_for :extra do
> + %script
> + :plain
> + $(document).bind("ajax:complete",
> + function(evt, data, status, xhr){
> + if(status == "error") {
> + $('.error').show();
> + $('form .spinner').fadeOut('fast');
> + }
> + }
> + );
With this approach, the error message is not displayed when JS is turned
off because it is not using flash functionality. I have tried to play
with this, the best solution would probably be to
use
format.js { render :layout => false, :status => :unauthorized }
in controller. But the problem is that the js.erb is not executed then :/
Jirka
More information about the aeolus-devel
mailing list