comfortable_mexican_sofa 1.12.2 → 1.12.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/comfortable_mexican_sofa/admin/application.js +1 -1
  3. data/app/assets/javascripts/comfortable_mexican_sofa/application.js.coffee +50 -57
  4. data/app/assets/javascripts/comfortable_mexican_sofa/cms/files.js.coffee +29 -0
  5. data/app/assets/javascripts/comfortable_mexican_sofa/cms/uploader.js.coffee +139 -0
  6. data/app/assets/stylesheets/comfortable_mexican_sofa/admin/application.css +1 -1
  7. data/app/assets/stylesheets/comfortable_mexican_sofa/application.css.sass +1 -0
  8. data/app/assets/stylesheets/comfortable_mexican_sofa/base.css.sass +67 -84
  9. data/app/controllers/comfy/admin/cms/base_controller.rb +11 -8
  10. data/app/controllers/comfy/admin/cms/categories_controller.rb +10 -9
  11. data/app/controllers/comfy/admin/cms/files_controller.rb +38 -69
  12. data/app/controllers/comfy/admin/cms/layouts_controller.rb +4 -3
  13. data/app/controllers/comfy/admin/cms/pages_controller.rb +17 -11
  14. data/app/controllers/comfy/admin/cms/revisions_controller.rb +10 -9
  15. data/app/controllers/comfy/admin/cms/sites_controller.rb +2 -1
  16. data/app/controllers/comfy/admin/cms/snippets_controller.rb +3 -2
  17. data/app/controllers/comfy/cms/assets_controller.rb +17 -9
  18. data/app/controllers/comfy/cms/content_controller.rb +20 -14
  19. data/app/models/comfy/cms/file.rb +16 -15
  20. data/app/models/comfy/cms/page.rb +2 -1
  21. data/app/models/comfy/cms/site.rb +5 -0
  22. data/app/views/comfy/admin/cms/files/_file.html.haml +26 -13
  23. data/app/views/comfy/admin/cms/files/_form.html.haml +8 -5
  24. data/app/views/comfy/admin/cms/files/_modal.html.haml +4 -0
  25. data/app/views/comfy/admin/cms/files/create.js.erb +1 -0
  26. data/app/views/comfy/admin/cms/files/destroy.js.coffee +2 -2
  27. data/app/views/comfy/admin/cms/files/index.html.haml +33 -31
  28. data/app/views/comfy/admin/cms/layouts/_form.html.haml +2 -5
  29. data/app/views/comfy/admin/cms/pages/_form.html.haml +7 -8
  30. data/app/views/comfy/admin/cms/pages/_form_blocks.html.haml +3 -3
  31. data/app/views/comfy/admin/cms/sites/_form.html.haml +2 -2
  32. data/app/views/comfy/admin/cms/sites/index.html.haml +1 -2
  33. data/app/views/comfy/admin/cms/snippets/_form.html.haml +5 -8
  34. data/app/views/kaminari/comfy/_paginator.html.haml +10 -11
  35. data/app/views/layouts/comfy/admin/cms.html.haml +3 -2
  36. data/app/views/layouts/comfy/admin/cms/_body.html.haml +8 -7
  37. data/app/views/layouts/comfy/admin/cms/{_center.html.haml → _flash.html.haml} +0 -3
  38. data/app/views/layouts/comfy/admin/cms/_footer_js.html.haml +0 -4
  39. data/app/views/layouts/comfy/admin/cms/_left.html.haml +10 -5
  40. data/comfortable_mexican_sofa.gemspec +9 -8
  41. data/config/cms_routes.rb +2 -2
  42. data/config/initializers/comfortable_mexican_sofa.rb +31 -13
  43. data/config/initializers/plupload.rb +9 -0
  44. data/config/locales/en.yml +18 -16
  45. data/db/upgrade_migrations/08_upgrade_to_1_12_0.rb +3 -0
  46. data/lib/comfortable_mexican_sofa.rb +6 -5
  47. data/lib/comfortable_mexican_sofa/access_control/admin_authentication.rb +20 -0
  48. data/lib/comfortable_mexican_sofa/access_control/admin_authorization.rb +8 -0
  49. data/lib/comfortable_mexican_sofa/access_control/public_authentication.rb +8 -0
  50. data/lib/comfortable_mexican_sofa/configuration.rb +11 -3
  51. data/lib/comfortable_mexican_sofa/engine.rb +1 -0
  52. data/lib/comfortable_mexican_sofa/fixture.rb +7 -5
  53. data/lib/comfortable_mexican_sofa/fixture/category.rb +10 -3
  54. data/lib/comfortable_mexican_sofa/form_builder.rb +1 -1
  55. data/lib/comfortable_mexican_sofa/routes/cms.rb +3 -0
  56. data/lib/comfortable_mexican_sofa/version.rb +1 -1
  57. data/lib/generators/comfy/cms/assets_generator.rb +15 -0
  58. data/lib/generators/comfy/cms/cms_generator.rb +19 -12
  59. data/lib/generators/comfy/cms/controllers_generator.rb +13 -0
  60. data/lib/generators/comfy/cms/models_generator.rb +13 -0
  61. data/lib/generators/comfy/cms/views_generator.rb +13 -0
  62. data/test/controllers/comfy/admin/cms/files_controller_test.rb +22 -95
  63. data/test/controllers/comfy/admin/cms/layouts_controller_test.rb +9 -10
  64. data/test/controllers/comfy/admin/cms/pages_controller_test.rb +26 -27
  65. data/test/controllers/comfy/admin/cms/snippets_controller_test.rb +7 -8
  66. data/test/controllers/comfy/cms/content_controller_test.rb +30 -4
  67. data/test/gemfiles/Gemfile.rails.4.0 +3 -2
  68. data/test/gemfiles/Gemfile.rails.4.1 +3 -2
  69. data/test/gemfiles/Gemfile.rails.master +3 -2
  70. data/test/generators/cms_assets_generator_test.rb +13 -0
  71. data/test/generators/cms_controllers_generator_test.rb +12 -0
  72. data/test/generators/cms_generator_test.rb +10 -8
  73. data/test/generators/cms_models_generator_test.rb +12 -0
  74. data/test/generators/cms_views_generator_test.rb +12 -0
  75. data/test/generators/scaffold_generator_test.rb +6 -7
  76. data/test/integration/access_control_test.rb +141 -0
  77. data/test/integration/routing_test.rb +19 -0
  78. data/test/lib/configuration_test.rb +8 -7
  79. data/test/lib/fixtures/categories_test.rb +1 -0
  80. data/test/lib/fixtures/files_test.rb +5 -0
  81. data/test/lib/fixtures/pages_test.rb +17 -1
  82. data/test/lib/fixtures/snippets_test.rb +5 -0
  83. data/test/models/page_test.rb +6 -0
  84. data/test/models/site_test.rb +9 -0
  85. data/test/test_helper.rb +28 -19
  86. metadata +82 -48
  87. data/app/views/comfy/admin/cms/files/_index.html.haml +0 -11
  88. data/lib/comfortable_mexican_sofa/authentication/dummy_auth.rb +0 -8
  89. data/lib/comfortable_mexican_sofa/authentication/http_auth.rb +0 -25
  90. data/test/integration/authentication_test.rb +0 -48
@@ -1,31 +1,34 @@
1
1
  class Comfy::Admin::Cms::BaseController < ComfortableMexicanSofa.config.base_controller.to_s.constantize
2
2
 
3
- protect_from_forgery
4
-
5
- # Authentication module must have #authenticate method
3
+ # Authentication module must have `authenticate` method
6
4
  include ComfortableMexicanSofa.config.admin_auth.to_s.constantize
7
5
 
6
+ # Authorization module must have `authorize` method
7
+ include ComfortableMexicanSofa.config.admin_authorization.to_s.constantize
8
+
9
+ protect_from_forgery
10
+
8
11
  before_action :authenticate,
9
12
  :load_admin_site,
10
13
  :set_locale,
11
14
  :load_fixtures,
12
15
  :except => :jump
13
-
16
+
14
17
  layout 'comfy/admin/cms'
15
-
18
+
16
19
  if ComfortableMexicanSofa.config.admin_cache_sweeper.present?
17
20
  cache_sweeper *ComfortableMexicanSofa.config.admin_cache_sweeper
18
21
  end
19
-
22
+
20
23
  def jump
21
24
  path = ComfortableMexicanSofa.config.admin_route_redirect
22
25
  return redirect_to(path) unless path.blank?
23
26
  load_admin_site
24
27
  redirect_to comfy_admin_cms_site_pages_path(@site) if @site
25
28
  end
26
-
29
+
27
30
  protected
28
-
31
+
29
32
  def load_admin_site
30
33
  if @site = ::Comfy::Cms::Site.find_by_id(params[:site_id] || session[:site_id]) || ::Comfy::Cms::Site.first
31
34
  session[:site_id] = @site.id
@@ -1,37 +1,38 @@
1
1
  class Comfy::Admin::Cms::CategoriesController < Comfy::Admin::Cms::BaseController
2
-
2
+
3
3
  before_action :load_category, :only => [:edit, :update, :destroy]
4
-
4
+ before_action :authorize
5
+
5
6
  def edit
6
7
  render
7
8
  end
8
-
9
+
9
10
  def create
10
11
  @category = @site.categories.create!(category_params)
11
12
  rescue ActiveRecord::RecordInvalid
12
13
  render :nothing => true
13
14
  end
14
-
15
+
15
16
  def update
16
17
  @category.update_attributes!(category_params)
17
18
  rescue ActiveRecord::RecordInvalid
18
19
  render :nothing => true
19
20
  end
20
-
21
+
21
22
  def destroy
22
23
  @category.destroy
23
24
  end
24
-
25
+
25
26
  protected
26
-
27
+
27
28
  def load_category
28
29
  @category = @site.categories.find(params[:id])
29
30
  rescue ActiveRecord::RecordNotFound
30
31
  render :nothing => true
31
32
  end
32
-
33
+
33
34
  def category_params
34
35
  params.fetch(:category, {}).permit!
35
36
  end
36
-
37
+
37
38
  end
@@ -1,77 +1,52 @@
1
1
  class Comfy::Admin::Cms::FilesController < Comfy::Admin::Cms::BaseController
2
-
2
+
3
3
  skip_before_action :load_fixtures
4
-
4
+
5
5
  before_action :build_file, :only => [:new, :create]
6
6
  before_action :load_file, :only => [:edit, :update, :destroy]
7
-
7
+ before_action :authorize
8
+
8
9
  def index
9
- @files = @site.files.not_page_file.includes(:categories).for_category(params[:category]).order('comfy_cms_files.position')
10
-
11
- if params[:ajax]
12
- if params[:not_images]
13
- files = @files.not_images.collect do |file|
14
- { :label => file.label,
15
- :filename => file.file_file_name,
16
- :url => file.file.url }
17
- end
18
- else
19
- files = @files.images.collect do |file|
20
- { :thumb => file.file.url(:cms_thumb),
21
- :image => file.file.url }
22
- end
23
- end
24
- render :json => files
25
- else
26
- return redirect_to :action => :new if @site.files.count == 0
27
- end
10
+ @files = @site.files.not_page_file.includes(:categories).for_category(params[:category])
11
+ .order('comfy_cms_files.position').page(params[:page]).per(50)
28
12
  end
29
-
13
+
30
14
  def new
31
15
  render
32
16
  end
33
17
 
34
18
  def create
35
- @files = []
36
-
37
- files = [file_params[:file]].flatten
38
- files.each_with_index do |file, i|
39
- label = (files.size > 1 && file_params[:label].present?) ?
40
- "#{file_params[:label]} #{i + 1}" :
41
- file_params[:label]
42
- @file = @site.files.create!(file_params.except(:file, :label).merge(
43
- :file => file,
44
- :label => label
45
- ))
46
- @files << @file
19
+ respond_to do |format|
20
+ if @file.save
21
+ format.html do
22
+ flash[:success] = I18n.t('comfy.admin.cms.files.created')
23
+ redirect_to :action => :edit, :id => @file
24
+ end
25
+ format.plupload do
26
+ render :text => render_to_string(:partial => 'file', :object => @file, :formats => [:html])
27
+ end
28
+ else
29
+ format.html do
30
+ flash.now[:danger] = I18n.t('comfy.admin.cms.files.creation_failure')
31
+ render :action => :new
32
+ end
33
+ format.plupload do
34
+ render :text => @file.errors.full_messages.to_sentence, :status => :unprocessable_entity
35
+ end
36
+ end
47
37
  end
48
-
49
- if params[:ajax]
50
- view = render_to_string(:partial => 'comfy/admin/cms/files/file', :collection => @files, :layout => false)
51
- render :json => {:filelink => @file.file.url, :filename => @file.file_file_name, :view => view.gsub("\n", '')}
52
- else
53
- flash[:success] = I18n.t('comfy.admin.cms.files.created')
38
+ end
39
+
40
+ def update
41
+ if @file.update(file_params)
42
+ flash[:success] = I18n.t('comfy.admin.cms.files.updated')
54
43
  redirect_to :action => :edit, :id => @file
55
- end
56
-
57
- rescue ActiveRecord::RecordInvalid
58
- if params[:ajax]
59
- render :nothing => true, :status => :unprocessable_entity
60
44
  else
61
- flash.now[:danger] = I18n.t('comfy.admin.cms.files.creation_failure')
62
- render :action => :new
45
+ flash.now[:danger] = I18n.t('comfy.admin.cms.files.update_failure')
46
+ render :action => :edit
63
47
  end
64
48
  end
65
-
66
- def update
67
- @file.update_attributes!(file_params)
68
- flash[:success] = I18n.t('comfy.admin.cms.files.updated')
69
- redirect_to :action => :edit, :id => @file
70
- rescue ActiveRecord::RecordInvalid
71
- flash.now[:danger] = I18n.t('comfy.admin.cms.files.update_failure')
72
- render :action => :edit
73
- end
74
-
49
+
75
50
  def destroy
76
51
  @file.destroy
77
52
  respond_to do |format|
@@ -82,7 +57,7 @@ class Comfy::Admin::Cms::FilesController < Comfy::Admin::Cms::BaseController
82
57
  end
83
58
  end
84
59
  end
85
-
60
+
86
61
  def reorder
87
62
  (params[:comfy_cms_file] || []).each_with_index do |id, index|
88
63
  if (cms_file = ::Comfy::Cms::File.find_by_id(id))
@@ -91,27 +66,21 @@ class Comfy::Admin::Cms::FilesController < Comfy::Admin::Cms::BaseController
91
66
  end
92
67
  render :nothing => true
93
68
  end
94
-
69
+
95
70
  protected
96
71
 
97
72
  def build_file
98
- @file = @site.files.new
73
+ @file = @site.files.new(file_params)
99
74
  end
100
-
75
+
101
76
  def load_file
102
77
  @file = @site.files.find(params[:id])
103
78
  rescue ActiveRecord::RecordNotFound
104
79
  flash[:danger] = I18n.t('comfy.admin.cms.files.not_found')
105
80
  redirect_to :action => :index
106
81
  end
107
-
82
+
108
83
  def file_params
109
- # single file upload
110
- unless (file = params[:file]).is_a?(Hash)
111
- params[:file] = { }
112
- params[:file][:file] = [file]
113
- end
114
84
  params.fetch(:file, {}).permit!
115
85
  end
116
-
117
86
  end
@@ -2,6 +2,7 @@ class Comfy::Admin::Cms::LayoutsController < Comfy::Admin::Cms::BaseController
2
2
 
3
3
  before_action :build_layout, :only => [:new, :create]
4
4
  before_action :load_layout, :only => [:edit, :update, :destroy]
5
+ before_action :authorize
5
6
 
6
7
  def index
7
8
  return redirect_to :action => :new if @site.layouts.count == 0
@@ -39,7 +40,7 @@ class Comfy::Admin::Cms::LayoutsController < Comfy::Admin::Cms::BaseController
39
40
  flash[:success] = I18n.t('comfy.admin.cms.layouts.deleted')
40
41
  redirect_to :action => :index
41
42
  end
42
-
43
+
43
44
  def reorder
44
45
  (params[:comfy_cms_layout] || []).each_with_index do |id, index|
45
46
  ::Comfy::Cms::Layout.where(:id => id).update_all(:position => index)
@@ -62,9 +63,9 @@ protected
62
63
  flash[:danger] = I18n.t('comfy.admin.cms.layouts.not_found')
63
64
  redirect_to :action => :index
64
65
  end
65
-
66
+
66
67
  def layout_params
67
68
  params.fetch(:layout, {}).permit!
68
69
  end
69
-
70
+
70
71
  end
@@ -3,12 +3,14 @@ class Comfy::Admin::Cms::PagesController < Comfy::Admin::Cms::BaseController
3
3
  before_action :check_for_layouts, :only => [:new, :edit]
4
4
  before_action :build_cms_page, :only => [:new, :create]
5
5
  before_action :load_cms_page, :only => [:edit, :update, :destroy]
6
+ before_action :authorize
6
7
  before_action :preview_cms_page, :only => [:create, :update]
7
- before_action :build_file, :only => [:new, :edit]
8
8
 
9
9
  def index
10
- return redirect_to :action => :new if @site.pages.count == 0
11
- @pages_by_parent = @site.pages.includes(:categories).group_by(&:parent_id)
10
+ return redirect_to :action => :new if site_has_no_pages?
11
+
12
+ @pages_by_parent = pages_grouped_by_parent
13
+
12
14
  if params[:category].present?
13
15
  @pages = @site.pages.includes(:categories).for_category(params[:category]).order('label')
14
16
  else
@@ -54,7 +56,7 @@ class Comfy::Admin::Cms::PagesController < Comfy::Admin::Cms::BaseController
54
56
  end
55
57
 
56
58
  def toggle_branch
57
- @pages_by_parent = @site.pages.includes(:categories).group_by(&:parent_id)
59
+ @pages_by_parent = pages_grouped_by_parent
58
60
  @page = @site.pages.find(params[:id])
59
61
  s = (session[:cms_page_tree] ||= [])
60
62
  id = @page.id.to_s
@@ -72,6 +74,14 @@ class Comfy::Admin::Cms::PagesController < Comfy::Admin::Cms::BaseController
72
74
 
73
75
  protected
74
76
 
77
+ def site_has_no_pages?
78
+ @site.pages.count == 0
79
+ end
80
+
81
+ def pages_grouped_by_parent
82
+ @site.pages.includes(:categories).group_by(&:parent_id)
83
+ end
84
+
75
85
  def check_for_layouts
76
86
  if @site.layouts.count == 0
77
87
  flash[:danger] = I18n.t('comfy.admin.cms.pages.layout_not_found')
@@ -85,10 +95,6 @@ protected
85
95
  @page.layout ||= (@page.parent && @page.parent.layout || @site.layouts.first)
86
96
  end
87
97
 
88
- def build_file
89
- @file = Comfy::Cms::File.new
90
- end
91
-
92
98
  def load_cms_page
93
99
  @page = @site.pages.find(params[:id])
94
100
  @page.attributes = page_params
@@ -104,14 +110,14 @@ protected
104
110
  @cms_site = @page.site
105
111
  @cms_layout = @page.layout
106
112
  @cms_page = @page
107
-
113
+
108
114
  # Chrome chokes on content with iframes. Issue #434
109
115
  response.headers['X-XSS-Protection'] = '0'
110
-
116
+
111
117
  render :inline => @page.render, :layout => layout, :content_type => 'text/html'
112
118
  end
113
119
  end
114
-
120
+
115
121
  def page_params
116
122
  params.fetch(:page, {}).permit!
117
123
  end
@@ -1,12 +1,13 @@
1
1
  class Comfy::Admin::Cms::RevisionsController < Comfy::Admin::Cms::BaseController
2
-
2
+
3
3
  before_action :load_record
4
4
  before_action :load_revision, :except => :index
5
-
5
+ before_action :authorize
6
+
6
7
  def index
7
8
  redirect_to :action => :show, :id => @record.revisions.first.try(:id) || 0
8
9
  end
9
-
10
+
10
11
  def show
11
12
  case @record
12
13
  when Comfy::Cms::Page
@@ -17,15 +18,15 @@ class Comfy::Admin::Cms::RevisionsController < Comfy::Admin::Cms::BaseController
17
18
  @versioned_content = @record.revision_fields.inject({}){|c, f| c[f] = @revision.data[f]; c }
18
19
  end
19
20
  end
20
-
21
+
21
22
  def revert
22
23
  @record.restore_from_revision(@revision)
23
24
  flash[:success] = I18n.t('comfy.admin.cms.revisions.reverted')
24
25
  redirect_to_record
25
26
  end
26
-
27
+
27
28
  protected
28
-
29
+
29
30
  def load_record
30
31
  @record = if params[:layout_id]
31
32
  ::Comfy::Cms::Layout.find(params[:layout_id])
@@ -38,14 +39,14 @@ protected
38
39
  flash[:danger] = I18n.t('comfy.admin.cms.revisions.record_not_found')
39
40
  redirect_to comfy_admin_cms_path
40
41
  end
41
-
42
+
42
43
  def load_revision
43
44
  @revision = @record.revisions.find(params[:id])
44
45
  rescue ActiveRecord::RecordNotFound
45
46
  flash[:danger] = I18n.t('comfy.admin.cms.revisions.not_found')
46
47
  redirect_to_record
47
48
  end
48
-
49
+
49
50
  def redirect_to_record
50
51
  redirect_to case @record
51
52
  when ::Comfy::Cms::Layout then edit_comfy_admin_cms_site_layout_path(@site, @record)
@@ -53,5 +54,5 @@ protected
53
54
  when ::Comfy::Cms::Snippet then edit_comfy_admin_cms_site_snippet_path(@site, @record)
54
55
  end
55
56
  end
56
-
57
+
57
58
  end
@@ -5,6 +5,7 @@ class Comfy::Admin::Cms::SitesController < Comfy::Admin::Cms::BaseController
5
5
 
6
6
  before_action :build_site, :only => [:new, :create]
7
7
  before_action :load_site, :only => [:edit, :update, :destroy]
8
+ before_action :authorize
8
9
 
9
10
  def index
10
11
  return redirect_to :action => :new if ::Comfy::Cms::Site.count == 0
@@ -58,7 +59,7 @@ protected
58
59
  flash[:danger] = I18n.t('comfy.admin.cms.sites.not_found')
59
60
  redirect_to :action => :index
60
61
  end
61
-
62
+
62
63
  def site_params
63
64
  params.fetch(:site, {}).permit!
64
65
  end
@@ -2,6 +2,7 @@ class Comfy::Admin::Cms::SnippetsController < Comfy::Admin::Cms::BaseController
2
2
 
3
3
  before_action :build_snippet, :only => [:new, :create]
4
4
  before_action :load_snippet, :only => [:edit, :update, :destroy]
5
+ before_action :authorize
5
6
 
6
7
  def index
7
8
  return redirect_to :action => :new if @site.snippets.count == 0
@@ -39,7 +40,7 @@ class Comfy::Admin::Cms::SnippetsController < Comfy::Admin::Cms::BaseController
39
40
  flash[:success] = I18n.t('comfy.admin.cms.snippets.deleted')
40
41
  redirect_to :action => :index
41
42
  end
42
-
43
+
43
44
  def reorder
44
45
  (params[:comfy_cms_snippet] || []).each_with_index do |id, index|
45
46
  ::Comfy::Cms::Snippet.where(:id => id).update_all(:position => index)
@@ -59,7 +60,7 @@ protected
59
60
  flash[:danger] = I18n.t('comfy.admin.cms.snippets.not_found')
60
61
  redirect_to :action => :index
61
62
  end
62
-
63
+
63
64
  def snippet_params
64
65
  params.fetch(:snippet, {}).permit!
65
66
  end
@@ -2,29 +2,37 @@ class Comfy::Cms::AssetsController < Comfy::Cms::BaseController
2
2
 
3
3
  skip_before_action :verify_authenticity_token
4
4
 
5
- before_action :load_cms_layout
5
+ before_action :load_cms_layout,
6
+ :use_null_session
7
+
8
+ after_action :set_cache_control_header
6
9
 
7
10
  def render_css
8
11
  render :text => @cms_layout.css, :content_type => 'text/css'
9
- cache_control_header
10
12
  end
11
13
 
12
14
  def render_js
13
15
  render :text => @cms_layout.js, :content_type => 'application/javascript'
14
- cache_control_header
15
16
  end
16
17
 
17
18
  protected
18
19
 
19
- def cache_control_header
20
- if params[:cache_buster].present?
21
- response.headers['Cache-Control'] = "public, max-age=#{1.year.to_i}"
22
- end
23
- end
24
-
25
20
  def load_cms_layout
26
21
  @cms_layout = @cms_site.layouts.find_by_identifier!(params[:identifier])
27
22
  rescue ActiveRecord::RecordNotFound
28
23
  render :nothing => true, :status => 404
29
24
  end
25
+
26
+ # null_session avoids cookies and flash updates
27
+ def use_null_session
28
+ ActionController::RequestForgeryProtection::ProtectionMethods::NullSession.new(self)
29
+ .handle_unverified_request
30
+ end
31
+
32
+ def set_cache_control_header
33
+ if params[:cache_buster].present?
34
+ response.headers['Cache-Control'] = "public, max-age=#{1.year.to_i}"
35
+ end
36
+ end
37
+
30
38
  end