3296: good tests do add value.
[arvados.git] / apps / workbench / app / controllers / application_controller.rb
index ca35bafe667b8077a692c9191086e6cc40b6aef4..0593ee38dc66e66d1bb59508f5456ebced04d35d 100644 (file)
@@ -12,6 +12,7 @@ class ApplicationController < ActionController::Base
   # Methods that don't require login should
   #   skip_around_filter :require_thread_api_token
   around_filter :require_thread_api_token, except: ERROR_ACTIONS
+  before_filter :accept_uuid_as_id_param, except: ERROR_ACTIONS
   before_filter :check_user_agreements, except: ERROR_ACTIONS
   before_filter :check_user_profile, except: [:update_profile] + ERROR_ACTIONS
   before_filter :check_user_notifications, except: ERROR_ACTIONS
@@ -350,10 +351,14 @@ class ApplicationController < ActionController::Base
     end
   end
 
-  def find_object_by_uuid
+
+  def accept_uuid_as_id_param
     if params[:id] and params[:id].match /\D/
       params[:uuid] = params.delete :id
     end
+  end
+
+  def find_object_by_uuid
     begin
       if not model_class
         @object = nil
@@ -524,13 +529,16 @@ class ApplicationController < ActionController::Base
     if current_user && profile_config
       missing_required_profile = false
 
-      user_prefs = User.limit(1).where(uuid: current_user.uuid).first.prefs
-      user_prefs = current_user.prefs if !user_prefs[:profile]
+      user_prefs = current_user.prefs
+      current_user.reload if !user_prefs[:profile]
+      user_prefs = current_user.prefs
       current_user_profile = user_prefs[:profile] if user_prefs
 
       profile_config.kind_of?(Array) && profile_config.andand.each do |entry|
         if entry['required']
-          if !current_user_profile || !current_user_profile[entry['key'].to_sym]
+          if !current_user_profile ||
+             !current_user_profile[entry['key'].to_sym] ||
+             current_user_profile[entry['key'].to_sym].empty?
             missing_required_profile = true
             break
           end