On Tue, 2010-08-03 at 15:44 +0200, jprov...@redhat.com wrote: > From: Jan Provaznik <jprov...@redhat.com> > > As we dropped side nav panel, it's not necessary to load providers > and pools for each request but only when it's needed. > > get_nav_items before_filter is not removed completely because of > side_panel is still used in instances and pools controllers. I also > moved get_nav_items between protected methods and added require_user > before_filter into settings and quota controllers (side effect of > get_nav_items is setting @current_user) > ---
Mostly ACK, minor fix suggestion inline. Also, maybe it would make sense to move the require_user filter up to application_controller, and just have a few exceptions, as there are not many pages you can get to in the app w/o being logged in? If so, that would be a simple scenario added to the authorization feature checking if the user is redirected to login page and receives appropriate error message if he attempts to access a secure page. > src/app/controllers/application_controller.rb | 16 +++++++--------- > src/app/controllers/dashboard_controller.rb | 2 ++ > src/app/controllers/instance_controller.rb | 2 +- > src/app/controllers/pool_controller.rb | 2 +- > src/app/controllers/provider_controller.rb | 1 + > src/app/controllers/quota_controller.rb | 1 + > src/app/controllers/settings_controller.rb | 5 +++++ > 7 files changed, 18 insertions(+), 11 deletions(-) > > diff --git a/src/app/controllers/application_controller.rb > b/src/app/controllers/application_controller.rb > index a563d57..948aa14 100644 > --- a/src/app/controllers/application_controller.rb > +++ b/src/app/controllers/application_controller.rb > @@ -30,8 +30,6 @@ class ApplicationController < ActionController::Base > init_gettext "ovirt" > layout :choose_layout > > - before_filter :get_nav_items > - > # General error handlers, must be in order from least specific > # to most specific > rescue_from Exception, :with => :handle_general_error > @@ -48,13 +46,6 @@ class ApplicationController < ActionController::Base > return @layout > end > > - def get_nav_items > - if !current_user.nil? > - @providers = Provider.list_for_user(@current_user, > Privilege::PROVIDER_VIEW) > - @pools = Pool.list_for_user(@current_user, Privilege::POOL_VIEW) > - end > - end > - > perm_helper_string = "" > Privilege::FULL_PRIVILEGE_LIST.each do |privilege| > perm_helper_string += "def has_#{privilege}?(o...@perm_obj); " + > @@ -155,6 +146,13 @@ class ApplicationController < ActionController::Base > render :json => json_hash(full_items, attributes, arg_list, find_opts, > id_method).to_json > end > > + def get_nav_items > + if !current_user.nil? > + @providers = Provider.list_for_user(@current_user, > Privilege::PROVIDER_VIEW) > + @pools = Pool.list_for_user(@current_user, Privilege::POOL_VIEW) > + end > + end > + > private > def json_error_hash(msg, status) > json = {} > diff --git a/src/app/controllers/dashboard_controller.rb > b/src/app/controllers/dashboard_controller.rb > index 757598d..3786896 100644 > --- a/src/app/controllers/dashboard_controller.rb > +++ b/src/app/controllers/dashboard_controller.rb > @@ -77,6 +77,8 @@ class DashboardController < ApplicationController > @current_users_pool = Pool.find(:first, :conditions => ['name = ?', > @current_user.login]) > @cloud_accounts = CloudAccount.list_for_user(@current_user, > Privilege::ACCOUNT_VIEW) > @stats = Instance.get_user_instances_stats(@current_user) > + @providers = Provider.list_for_user(@current_user, > Privilege::PROVIDER_VIEW) > + @pools = Pool.list_for_user(@current_user, Privilege::POOL_VIEW) > render :action => :summary > end > Instead of adding the 2 lines above, this should probably just have :get_nav_items added as a filter, like you do below with Instance controller. > diff --git a/src/app/controllers/instance_controller.rb > b/src/app/controllers/instance_controller.rb > index f65f7c1..fcb237e 100644 > --- a/src/app/controllers/instance_controller.rb > +++ b/src/app/controllers/instance_controller.rb > @@ -22,7 +22,7 @@ > require 'util/condormatic' > > class InstanceController < ApplicationController > - before_filter :require_user > + before_filter :require_user, :get_nav_items > layout :layout > > def layout > diff --git a/src/app/controllers/pool_controller.rb > b/src/app/controllers/pool_controller.rb > index 19effa9..41c5369 100644 > --- a/src/app/controllers/pool_controller.rb > +++ b/src/app/controllers/pool_controller.rb > @@ -23,7 +23,7 @@ require 'util/taskomatic' > require 'util/condormatic' > > class PoolController < ApplicationController > - before_filter :require_user > + before_filter :require_user, :get_nav_items > > def index > render :action => 'new' > diff --git a/src/app/controllers/provider_controller.rb > b/src/app/controllers/provider_controller.rb > index eaf1d53..9058c3e 100644 > --- a/src/app/controllers/provider_controller.rb > +++ b/src/app/controllers/provider_controller.rb > @@ -23,6 +23,7 @@ class ProviderController < ApplicationController > before_filter :require_user > > def index > + @providers = Provider.list_for_user(@current_user, > Privilege::PROVIDER_VIEW) > end > > def show > diff --git a/src/app/controllers/quota_controller.rb > b/src/app/controllers/quota_controller.rb > index c462f45..48cb997 100644 > --- a/src/app/controllers/quota_controller.rb > +++ b/src/app/controllers/quota_controller.rb > @@ -21,6 +21,7 @@ > > > class QuotaController < ApplicationController > + before_filter :require_user > > def show > @parent = get_parent_object(params) > diff --git a/src/app/controllers/settings_controller.rb > b/src/app/controllers/settings_controller.rb > index 7d41203..efeec2d 100644 > --- a/src/app/controllers/settings_controller.rb > +++ b/src/app/controllers/settings_controller.rb > @@ -20,5 +20,10 @@ > # Likewise, all the methods added will be available for all controllers. > > class SettingsController < ApplicationController > + before_filter :require_user > + > + def index > + @providers = Provider.list_for_user(@current_user, > Privilege::PROVIDER_VIEW) > + end > > end _______________________________________________ deltacloud-devel mailing list deltacloud-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/deltacloud-devel