<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -9,6 +9,7 @@ class Admin::ArticlesController &lt; Admin::BaseController
   before_filter :check_for_new_draft,  :only =&gt; [:create, :update, :upload]
   
   before_filter :find_site_article, :only =&gt; [:edit, :update, :comments, :approve, :unapprove, :destroy, :attach, :detach]
+  before_filter :protect_action, :only =&gt; [:approve, :unapprove, :attach, :detach]
   before_filter :login_required, :except =&gt; :upload
   before_filter :load_sections, :only =&gt; [:new, :edit]
 </diff>
      <filename>app/controllers/admin/articles_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,11 +2,24 @@ class Admin::BaseController &lt; ApplicationController
   class_inheritable_reader :member_actions
   write_inheritable_attribute :member_actions, []
   include AuthenticatedSystem
+  before_filter :protect_action, :only =&gt; [:create, :update, :destroy]
   before_filter { |c| UserMailer.default_url_options[:host] = c.request.host_with_port }
   before_filter :login_from_cookie
   before_filter :login_required, :except =&gt; :feed
 
   protected
+    def protect_action
+      if request.get?
+        if params[:id]
+          redirect_to :action =&gt; 'show', :id =&gt; params[:id]
+        else
+          redirect_to :action =&gt; 'index'
+        end
+      else
+        true
+      end
+    end
+
     # standard authorization method.  allow logged in users that are admins, or members in certain actions
     def authorized?
       logged_in? &amp;&amp; (admin? || member_actions.include?(action_name) || allow_member?)</diff>
      <filename>app/controllers/admin/base_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 class Admin::CachedPagesController &lt; Admin::BaseController
   before_filter { |c| raise ActionController::UnknownController unless c.class.perform_caching }
+  before_filter :protect_action, :only =&gt; :clear
 
   def index
     CachedPage.with_current_scope do</diff>
      <filename>app/controllers/admin/cached_pages_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,7 @@
 class Admin::CommentsController &lt; Admin::BaseController
 
   member_actions.push(*%w(index unapproved create edit update approve unapprove destroy close ))
+  before_filter :protect_action, :only =&gt; [:approve, :unapprove]
 
 private
 </diff>
      <filename>app/controllers/admin/comments_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,6 +3,7 @@ class Admin::OverviewController &lt; Admin::BaseController
   session :off, :only =&gt; :feed
   before_filter :basic_auth_required, :only =&gt; :feed
   caches_page :feed
+  before_filter :protect_action, :only =&gt; :delete
   
   helper Admin::ArticlesHelper
   </diff>
      <filename>app/controllers/admin/overview_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@ class Admin::ResourcesController &lt; Admin::DesignController
   verify :method =&gt; :post, :params =&gt; :resource, :only =&gt; :upload,
          :add_flash   =&gt; { :error =&gt; 'Resource required' },
          :redirect_to =&gt; { :controller =&gt; 'design', :action =&gt; 'index' }
-  
+
   def index
     redirect_to :controller =&gt; 'design'
   end
@@ -26,6 +26,10 @@ class Admin::ResourcesController &lt; Admin::DesignController
   end
 
   def upload
+    if request.get?
+      redirect_to :controller =&gt; 'design', :action =&gt; 'index'
+      return
+    end
     if params[:resource] &amp;&amp; Asset.image?(params[:resource].content_type.strip) &amp;&amp; (1..1.megabyte).include?(params[:resource].size)
       @resource = @theme.resources.write File.basename(params[:resource].original_filename), params[:resource].read
       flash[:notice] = &quot;'#{@resource.basename}' was uploaded successfully.&quot;
@@ -36,6 +40,10 @@ class Admin::ResourcesController &lt; Admin::DesignController
   end
   
   def remove
+    if request.get?
+      redirect_to :action =&gt; 'edit' 
+      return
+    end
     @resource = @theme.resources[params[:filename]]
     render :update do |page|
       @resource.unlink if @resource.file?</diff>
      <filename>app/controllers/admin/resources_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 class Admin::SectionsController &lt; Admin::BaseController
   cache_sweeper :article_sweeper, :except =&gt; :index
+  before_filter :protect_action, :only =&gt; :order
   before_filter :find_and_sort_templates,   :only =&gt; [:index, :edit]
   before_filter :find_and_reorder_sections, :only =&gt; [:index, :edit]
   before_filter :find_section,              :only =&gt; [:destroy, :update]</diff>
      <filename>app/controllers/admin/sections_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,10 @@ class Admin::TemplatesController &lt; Admin::DesignController
   end
 
   def remove
+    if request.get?
+      redirect_to :action =&gt; 'edit' 
+      return
+    end
     @tmpl = @theme.templates[params[:filename]]
     render :update do |page|
       if !@tmpl.file?</diff>
      <filename>app/controllers/admin/templates_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ class Admin::ThemesController &lt; Admin::BaseController
   @@theme_export_path   = RAILS_PATH + 'tmp/export'
   @@theme_content_types = %w(application/zip multipart/x-zip application/x-zip-compressed)
   cattr_accessor :theme_export_path, :theme_content_types
-  
+  before_filter :protect_action, :only =&gt; [:export, :change_to, :rollback, :import]
   before_filter :find_theme, :only =&gt; [:preview_for, :export, :change_to, :show, :destroy]
 
   def preview_for</diff>
      <filename>app/controllers/admin/themes_controller.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>e668bea7af08a86c26f0b856b8f52555a37f2154</id>
    </parent>
  </parents>
  <author>
    <name>rick</name>
    <email>technoweenie@gmail.com</email>
  </author>
  <url>http://github.com/technoweenie/mephisto/commit/45ffeb7a56d59b8abe0bd78b53cec861423c9654</url>
  <id>45ffeb7a56d59b8abe0bd78b53cec861423c9654</id>
  <committed-date>2008-06-30T20:28:05-07:00</committed-date>
  <authored-date>2008-06-30T20:27:44-07:00</authored-date>
  <message>security protection for admin actions</message>
  <tree>4637da92cd946221cfe706d64067d957a09a30aa</tree>
  <committer>
    <name>rick</name>
    <email>technoweenie@gmail.com</email>
  </committer>
</commit>
