]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/application_controller.rb
Qualify SCALE properly - apparently object visibility when running the
[rails.git] / app / controllers / application_controller.rb
index 110682947aa7b75983b0a7ac5cf020ca0c68ee6a..3eefa4a9142d4d760b959799b33fb5fad0803b4a 100644 (file)
@@ -22,61 +22,19 @@ class ApplicationController < ActionController::Base
     redirect_to :controller => 'user', :action => 'login', :referer => request.request_uri unless @user
   end
 
-  ##
-  # requires the user to be logged in by the token or HTTP methods, or have an 
-  # OAuth token with the right capability. this method is a bit of a pain to call 
-  # directly, since it's cumbersome to call filters with arguments in rails. to
-  # make it easier to read and write the code, there are some utility methods
-  # below.
-  def require_capability(cap)
-    # when the current token is nil, it means the user logged in with a different
-    # method, otherwise an OAuth token was used, which has to be checked.
-    unless @current_token.nil?
-      unless @current_token.read_attribute(cap)
-        render :text => "OAuth token doesn't have that capability.", :status => :forbidden
-        return false
-      end
-    end
-  end
-
-  # Utility methods to make the controller filter methods easier to read and write.
-  def require_allow_read_prefs
-    require_capability(:allow_read_prefs)
-  end
-  def require_allow_write_prefs
-    require_capability(:allow_write_prefs)
-  end
-  def require_allow_write_diary
-    require_capability(:allow_write_diary)
-  end
-  def require_allow_write_api
-    require_capability(:allow_write_api)
-  end
-  def require_allow_read_gpx
-    require_capability(:allow_read_gpx)
-  end
-  def require_allow_write_gpx
-    require_capability(:allow_write_gpx)
-  end
-
   ##
   # sets up the @user object for use by other methods. this is mostly called
   # from the authorize method, but can be called elsewhere if authorisation
   # is optional.
   def setup_user_auth
-    # try and setup using OAuth
-    if oauthenticate
-      @user = @current_token.user
+    username, passwd = get_auth_data # parse from headers
+    # authenticate per-scheme
+    if username.nil?
+      @user = nil # no authentication provided - perhaps first connect (client should retry after 401)
+    elsif username == 'token' 
+      @user = User.authenticate(:token => passwd) # preferred - random token for user from db, passed in basic auth
     else
-      username, passwd = get_auth_data # parse from headers
-      # authenticate per-scheme
-      if username.nil?
-        @user = nil # no authentication provided - perhaps first connect (client should retry after 401)
-      elsif username == 'token'
-        @user = User.authenticate(:token => passwd) # preferred - random token for user from db, passed in basic auth
-      else
-        @user = User.authenticate(:username => username, :password => passwd) # basic auth
-      end
+      @user = User.authenticate(:username => username, :password => passwd) # basic auth
     end
   end
 
@@ -143,9 +101,12 @@ class ApplicationController < ActionController::Base
   end
   
   def set_locale
+    response.header['Vary'] = 'Accept-Language'
+
     if @user
       if !@user.languages.empty?
         request.user_preferred_languages = @user.languages
+        response.header['Vary'] = '*'
       elsif !request.user_preferred_languages.empty?
         @user.languages = request.user_preferred_languages
         @user.save
@@ -171,6 +132,8 @@ class ApplicationController < ActionController::Base
     rescue OSM::APIError => ex
       report_error ex.message, ex.status
     rescue Exception => ex
+      logger.info("API threw unexpected #{ex.class} exception: #{ex.message}")
+      ex.backtrace.each { |l| logger.info(l) }
       report_error "#{ex.class}: #{ex.message}", :internal_server_error
     end
   end