]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/application_controller.rb
Mark yet more methods as needing write access to the database
[rails.git] / app / controllers / application_controller.rb
index 6caed05940a0bf024dbd51259f67fe04a68bbf92..7ac9e6402bc64236d80aeac26f28e1a36554060e 100644 (file)
@@ -4,13 +4,6 @@ class ApplicationController < ActionController::Base
   protect_from_forgery
 
   if STATUS == :database_readonly or STATUS == :database_offline
-    after_filter :clear_session
-    wrap_parameters false
-
-    def clear_session
-      session.clear
-    end
-
     def self.cache_sweeper(*sweepers)
     end
   end
@@ -51,7 +44,13 @@ class ApplicationController < ActionController::Base
   end
 
   def require_user
-    redirect_to :controller => 'user', :action => 'login', :referer => request.fullpath unless @user
+    unless @user
+      if request.get?
+        redirect_to :controller => 'user', :action => 'login', :referer => request.fullpath
+      else
+        render :nothing => true, :status => :forbidden
+      end
+    end
   end
 
   ##
@@ -356,6 +355,23 @@ class ApplicationController < ActionController::Base
     !@user.nil?
   end
 
+  ##
+  # ensure that there is a "this_user" instance variable
+  def lookup_this_user
+    unless @this_user = User.active.find_by_display_name(params[:display_name])
+      render_unknown_user params[:display_name]
+    end
+  end
+
+  ##
+  # render a "no such user" page
+  def render_unknown_user(name)
+    @title = t "user.no_such_user.title"
+    @not_found_user = name
+
+    render :template => "user/no_such_user", :status => :not_found
+  end
+  
 private 
 
   # extract authorisation credentials from headers, returns user = nil if none