effective_regions 1.8.3 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 976c64c5a328d5cf16c0e03283e0bce98f3de124826cee670cc68e400ff04dae
4
- data.tar.gz: 64bd24889c6f136b80e5bc12126e4aa2282f09066af63f91ddc02366abf3b249
3
+ metadata.gz: a7aa0433b2e695dd195090cb20d46d4baedecce240bdf62d36cb5e3a071266bf
4
+ data.tar.gz: 0f9ec81c8a9b84d55cc2a4acd76c076b442c012946d2943b60082ed067cb8295
5
5
  SHA512:
6
- metadata.gz: 7d28f939878da56fef56b4c66c8570f563b04067ca38ffee7b8bf0ed50470df5377eee5ae70854f3132f2bfe6592fb0585f0f3b48f3e0c4eb23acf64a1c6976f
7
- data.tar.gz: c449ac454e0e2c1076211f93832827a9404d2bd9b4a025be50c0eafeae1b01465206e3c5aac16b50e87a51c54f6c210ede2f572f9890d3b604ab35f62c2bc1a5
6
+ metadata.gz: a9d15123d4576f57191b4ef573b310b1b0dd86aa890e0621740975fdd5666250a07d419c7f21658f52ab669624ee933a163390ff988c79f85137f62086671a37
7
+ data.tar.gz: 42e37bab17b09f62870ef01e40df40e751644953ed0e8b0c46dc36f2ca6f8fd1544a0371648ae010236280841ca16b3197ba0c19989576b42c2b461a9232d25b
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2014 Code and Effect Inc.
1
+ Copyright 2021 Code and Effect Inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -252,36 +252,14 @@ You can overide the default behaviour by passing an Exit URL as a parameter:
252
252
  = link_to 'Edit Post Content', effective_regions.edit_path(post_path(@post), :exit => edit_admin_post_path(@post))
253
253
  ```
254
254
 
255
-
256
255
  ## Authorization
257
256
 
258
- All authorization checks are handled via the config.authorization_method found in the effective_regions.rb initializer.
259
-
260
- It is intended for flow through to CanCan, but that is not required.
261
-
262
- The authorization method can be defined as:
263
-
264
- ```ruby
265
- EffectiveRegions.setup do |config|
266
- config.authorization_method = Proc.new { |controller, action, resource| can?(action, resource) }
267
- end
268
- ```
257
+ All authorization checks are handled through the
258
+ [effective_resources](https://github.com/code-and-effect/effective_resources/)
259
+ gem and its `config.authorization_method` found in
260
+ the `config/initializers/effective_resources.rb` initializer.
269
261
 
270
- or as a method:
271
-
272
- ```ruby
273
- EffectiveRegions.setup do |config|
274
- config.authorization_method = :authorize_effective_regions
275
- end
276
- ```
277
-
278
- and then in your application_controller.rb:
279
-
280
- ```ruby
281
- def authorize_effective_regions(action, resource)
282
- can?(action, resource)
283
- end
284
- ```
262
+ ## Permissions
285
263
 
286
264
  There are 3 different levels of permissions to be considered:
287
265
 
@@ -297,19 +275,6 @@ can :update, Effective::Region
297
275
 
298
276
  can :update, ActsAsRegionableObject # This would be your Event, Post, or Page, or whatever.
299
277
 
300
- If the method or proc returns false (user is not authorized) an `Effective::AccessDenied` exception will be raised
301
-
302
- You can rescue from this exception by adding the following to your application_controller.rb
303
-
304
- ```ruby
305
- rescue_from Effective::AccessDenied do |exception|
306
- respond_to do |format|
307
- format.html { render 'static_pages/access_denied', :status => 403 }
308
- format.any { render :text => 'Access Denied', :status => 403 }
309
- end
310
- end
311
- ```
312
-
313
278
  ## Snippets
314
279
 
315
280
  Snippets are intelligent pieces of content that can be dropped into an effective_region through the full-screen editor's 'Insert Snippet' dropdown.
@@ -633,13 +598,6 @@ Code and Effect is the product arm of [AgileStyle](http://www.agilestyle.com/),
633
598
 
634
599
  The test suite for this gem is unfortunately not yet complete.
635
600
 
636
- Run tests by:
637
-
638
- ```ruby
639
- rake spec
640
- ```
641
-
642
-
643
601
  ## Contributing
644
602
 
645
603
  1. Fork it
@@ -648,4 +606,3 @@ rake spec
648
606
  4. Push to the branch (`git push origin my-new-feature`)
649
607
  5. Bonus points for test coverage
650
608
  6. Create new Pull Request
651
-
@@ -0,0 +1,3 @@
1
+ //= link_directory ../javascripts .js
2
+ //= link_directory ../stylesheets .css
3
+ //= link_directory ../images/effective/templates
@@ -0,0 +1,25 @@
1
+ CKEDITOR.dialog.add 'drop_cap', (editor) -> # Must match the class name of the snippet
2
+ title: 'A drop cap',
3
+ minWidth: 200,
4
+ minHeight: 100,
5
+ contents: [
6
+ {
7
+ id: 'drop_cap_id', # Just an html id, doesn't really matter what is here
8
+ elements: [
9
+ {
10
+ id: 'letter'
11
+ type: 'text',
12
+ label: 'Letter (required)',
13
+ setup: (widget) -> this.setValue(widget.data.letter)
14
+ commit: (widget) -> widget.setData('letter', this.getValue())
15
+ },
16
+ {
17
+ id: 'html_class'
18
+ type: 'text',
19
+ label: 'Additional html classes (optional)',
20
+ setup: (widget) -> this.setValue(widget.data.html_class)
21
+ commit: (widget) -> widget.setData('html_class', this.getValue())
22
+ }
23
+ ]
24
+ }
25
+ ]
@@ -0,0 +1,7 @@
1
+ .dropcap {
2
+ float: left;
3
+ position: relative;
4
+ font-size: larger;
5
+ font-weight: bold;
6
+ margin-right: 0.5rem;
7
+ }
@@ -3,24 +3,20 @@ module Effective
3
3
  respond_to :html, :json
4
4
  layout false
5
5
 
6
- if respond_to?(:before_action)
7
- skip_before_action :verify_authenticity_token, only: :update
8
- before_action :authenticate_user! if defined?(Devise)
9
- else
10
- skip_before_filter :verify_authenticity_token, only: :update
11
- before_filter :authenticate_user! if defined?(Devise)
12
- end
6
+ skip_before_action :verify_authenticity_token, only: :update
7
+ before_action(:authenticate_user!) if defined?(Devise)
13
8
 
14
- skip_log_page_views quiet: true, only: [:snippet] if defined?(EffectiveLogging)
9
+ skip_log_page_views(quiet: true, only: [:snippet]) if defined?(EffectiveLogging)
15
10
 
16
11
  def edit
17
- EffectiveRegions.authorize!(self, :edit, Effective::Region.new)
12
+ EffectiveResources.authorize!(self, :edit, Effective::Region.new)
18
13
 
19
14
  cookies['effective_regions_editting'] = {:value => params[:exit].presence || request.referrer, :path => '/'}
20
15
 
21
16
  # TODO: turn this into a cookie or something better.
22
17
  uri = URI.parse(Rack::Utils.unescape(request.url.sub('/edit', '')))
23
18
  uri.query = [uri.query, "edit=true"].compact.join('&')
19
+
24
20
  redirect_to uri.to_s
25
21
  end
26
22
 
@@ -37,15 +33,15 @@ module Effective
37
33
  regionable, title = find_regionable(key)
38
34
 
39
35
  if regionable
40
- EffectiveRegions.authorized?(self, :update, regionable) # can I update the regionable object?
36
+ EffectiveResources.authorized?(self, :update, regionable) # can I update the regionable object?
41
37
 
42
38
  region = regionable.regions.find { |region| region.title == title }
43
- region ||= regionable.regions.build(:title => title)
39
+ region ||= regionable.regions.build(title: title)
44
40
 
45
41
  to_save = regionable
46
42
  else
47
- region = Effective::Region.global.where(:title => title).first_or_initialize
48
- EffectiveRegions.authorized?(self, :update, region) # can I update the global region?
43
+ region = Effective::Region.global.where(title: title).first_or_initialize
44
+ EffectiveResources.authorized?(self, :update, region) # can I update the global region?
49
45
 
50
46
  to_save = region
51
47
  end
@@ -68,15 +64,15 @@ module Effective
68
64
 
69
65
  response[:refresh] = true if refresh_page
70
66
 
71
- render :json => response.to_json(), :status => 200
67
+ render(json: response.to_json(), status: 200)
72
68
  return
73
69
  end
74
70
 
75
- render :text => 'error', :status => :unprocessable_entity
71
+ render(text: 'error', status: :unprocessable_entity)
76
72
  end
77
73
 
78
74
  def snippet # This is a GET. CKEDITOR passes us data, we need to render the non-editable content
79
- EffectiveRegions.authorize!(self, :edit, Effective::Region.new)
75
+ EffectiveResources.authorize!(self, :edit, Effective::Region.new)
80
76
 
81
77
  klass = "Effective::Snippets::#{region_params[:name].try(:classify)}".safe_constantize
82
78
 
@@ -153,4 +149,3 @@ module Effective
153
149
 
154
150
  end
155
151
  end
156
-
@@ -2,7 +2,7 @@ module EffectiveRegionsControllerHelper
2
2
  def effectively_editing?
3
3
  @effectively_editing ||= (
4
4
  request.fullpath.include?('edit=true') &&
5
- (EffectiveRegions.authorized?(controller, :edit, Effective::Region.new()) rescue false)
5
+ EffectiveResources.authorized?(controller, :edit, Effective::Region.new)
6
6
  )
7
7
  end
8
8
  alias_method :effectively_editting?, :effectively_editing?
@@ -38,8 +38,6 @@ module EffectiveRegionsHelper
38
38
  end
39
39
  end
40
40
 
41
- private
42
-
43
41
  def ckeditor_region(args, options = {}, &block)
44
42
  obj = args.first
45
43
  title = args.last.to_s.parameterize
@@ -63,7 +61,7 @@ module EffectiveRegionsHelper
63
61
  region = obj.regions.find { |region| region.title == title }
64
62
 
65
63
  if effectively_editing?
66
- can_edit = (EffectiveRegions.authorized?(controller, :update, obj) rescue false)
64
+ can_edit = EffectiveResources.authorized?(controller, :update, obj)
67
65
  opts[:id] = [model_name_from_record_or_class(obj).param_key(), obj.id, title].join('_')
68
66
  end
69
67
  else # This is a global region
@@ -71,7 +69,7 @@ module EffectiveRegionsHelper
71
69
  region = regions.find { |region| region.title == title } || Effective::Region.new(:title => title)
72
70
 
73
71
  if effectively_editing?
74
- can_edit = (EffectiveRegions.authorized?(controller, :update, region) rescue false)
72
+ can_edit = EffectiveResources.authorized?(controller, :update, region)
75
73
  opts[:id] = title.to_s.parameterize
76
74
  end
77
75
  end
@@ -112,6 +110,4 @@ module EffectiveRegionsHelper
112
110
  end.html_safe
113
111
  end
114
112
 
115
-
116
-
117
113
  end
@@ -1,7 +1,7 @@
1
1
  module ActsAsRegionable
2
2
  extend ActiveSupport::Concern
3
3
 
4
- module ActiveRecord
4
+ module Base
5
5
  def acts_as_regionable(*options)
6
6
  @acts_as_regionable_opts = options || []
7
7
  include ::ActsAsRegionable
@@ -9,7 +9,7 @@ module ActsAsRegionable
9
9
  end
10
10
 
11
11
  included do
12
- has_many :regions, :as => :regionable, :class_name => 'Effective::Region', :dependent => :delete_all, :autosave => true
12
+ has_many :regions, as: :regionable, class_name: 'Effective::Region', dependent: :delete_all, autosave: true
13
13
  end
14
14
 
15
15
  module ClassMethods
@@ -36,4 +36,3 @@ module ActsAsRegionable
36
36
  end
37
37
 
38
38
  end
39
-
@@ -11,15 +11,12 @@ module Effective
11
11
  # The instance ones will have just one file
12
12
  has_one_attached :file
13
13
 
14
- # Attributes
15
- # global :boolean
14
+ effective_resource do
15
+ global :boolean
16
+ end
16
17
 
17
18
  def self.global
18
19
  CkAsset.where(global: true).first || CkAsset.create!(global: true)
19
20
  end
20
21
  end
21
22
  end
22
-
23
-
24
-
25
-
@@ -2,21 +2,22 @@ module Effective
2
2
  class Region < ActiveRecord::Base
3
3
  self.table_name = EffectiveRegions.regions_table_name.to_s
4
4
 
5
- belongs_to :regionable, :polymorphic => true
5
+ belongs_to :regionable, polymorphic: true, optional: true
6
6
 
7
- # structure do
8
- # title :string
9
- # content :text
10
- # snippets :text
11
- # timestamps
12
- # end
7
+ effective_resource do
8
+ title :string
9
+ content :text
10
+ snippets :text
11
+
12
+ timestamps
13
+ end
13
14
 
14
15
  serialize :snippets, HashWithIndifferentAccess
15
16
 
16
17
  scope :global, -> { where("#{EffectiveRegions.regions_table_name}.regionable_type IS NULL").where("#{EffectiveRegions.regions_table_name}.regionable_id IS NULL") }
17
18
  scope :with_snippets, -> { where("#{EffectiveRegions.regions_table_name}.snippets ILIKE ?", '%snippet_%') }
18
19
 
19
- validates_presence_of :title
20
+ validates :title, presence: true
20
21
 
21
22
  def snippets
22
23
  self[:snippets] || HashWithIndifferentAccess.new()
@@ -41,7 +42,3 @@ module Effective
41
42
 
42
43
  end
43
44
  end
44
-
45
-
46
-
47
-
@@ -0,0 +1,11 @@
1
+ module Effective
2
+ module Snippets
3
+ class DropCap < Snippet
4
+
5
+ def snippet_attributes
6
+ super + [:letter, :html_class]
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,2 @@
1
+ .dropcap{class: drop_cap.html_class.presence}
2
+ %span= drop_cap.letter
@@ -2,29 +2,6 @@ EffectiveRegions.setup do |config|
2
2
  config.regions_table_name = :regions
3
3
  config.ck_assets_table_name = :ck_assets
4
4
 
5
- # Authorization Method
6
- #
7
- # This method is called by all controller actions with the appropriate action and resource
8
- # If the method returns false, an Effective::AccessDenied Error will be raised (see README.md for complete info)
9
- #
10
- # Use via Proc (and with CanCan):
11
- # config.authorization_method = Proc.new { |controller, action, resource| can?(action, resource) }
12
- #
13
- # Use via custom method:
14
- # config.authorization_method = :my_authorization_method
15
- #
16
- # And then in your application_controller.rb:
17
- #
18
- # def my_authorization_method(action, resource)
19
- # current_user.is?(:admin)
20
- # end
21
- #
22
- # Or disable the check completely:
23
- # config.authorization_method = false
24
- config.authorization_method = Proc.new { |controller, action, resource| authorize!(action, resource) } # CanCanCan
25
-
26
-
27
-
28
5
  # Before Region Save Method
29
6
  #
30
7
  # This method is called when a User clicks the 'Save' button in the full screen editor.
@@ -1,34 +1,15 @@
1
+ require 'effective_resources'
1
2
  require 'effective_ckeditor'
2
3
  require 'effective_regions/engine'
3
4
  require 'effective_regions/version'
4
5
 
5
6
  module EffectiveRegions
6
- mattr_accessor :regions_table_name
7
- mattr_accessor :ck_assets_table_name
8
7
 
9
- mattr_accessor :authorization_method
10
- mattr_accessor :before_save_method
11
-
12
- def self.setup
13
- yield self
8
+ def self.config_keys
9
+ [:regions_table_name, :ck_assets_table_name, :before_save_method]
14
10
  end
15
11
 
16
- def self.authorized?(controller, action, resource)
17
- @_exceptions ||= [Effective::AccessDenied, (CanCan::AccessDenied if defined?(CanCan)), (Pundit::NotAuthorizedError if defined?(Pundit))].compact
18
-
19
- return !!authorization_method unless authorization_method.respond_to?(:call)
20
- controller = controller.controller if controller.respond_to?(:controller)
21
-
22
- begin
23
- !!(controller || self).instance_exec((controller || self), action, resource, &authorization_method)
24
- rescue *@_exceptions
25
- false
26
- end
27
- end
28
-
29
- def self.authorize!(controller, action, resource)
30
- raise Effective::AccessDenied.new('Access Denied', action, resource) unless authorized?(controller, action, resource)
31
- end
12
+ include EffectiveGem
32
13
 
33
14
  # Returns a Snippet.new() for every class in the /app/effective/snippets/* directory
34
15
  def self.snippets
@@ -6,7 +6,9 @@ module EffectiveRegions
6
6
 
7
7
  # Include Helpers to base application
8
8
  initializer 'effective_regions.action_controller' do |app|
9
- ActiveSupport.on_load :action_controller do
9
+ ActiveSupport.on_load :action_controller_base do
10
+ helper EffectiveRegionsHelper
11
+
10
12
  ActionController::Base.send(:include, ::EffectiveRegionsControllerHelper)
11
13
  end
12
14
  end
@@ -14,7 +16,7 @@ module EffectiveRegions
14
16
  # Include acts_as_addressable concern and allow any ActiveRecord object to call it
15
17
  initializer 'effective_regions.active_record' do |app|
16
18
  ActiveSupport.on_load :active_record do
17
- ActiveRecord::Base.extend(ActsAsRegionable::ActiveRecord)
19
+ ActiveRecord::Base.extend(ActsAsRegionable::Base)
18
20
  end
19
21
  end
20
22
 
@@ -24,7 +26,7 @@ module EffectiveRegions
24
26
  end
25
27
 
26
28
  initializer "effective_regions.append_precompiled_assets" do |app|
27
- Rails.application.config.assets.precompile += ['ck_assets.js', 'ck_assets.css']
29
+ app.config.assets.precompile += ['effective_regions_manifest.js', 'ck_assets.js', 'ck_assets.css', 'drop_cap.css']
28
30
  end
29
31
 
30
32
  end
@@ -1,3 +1,3 @@
1
1
  module EffectiveRegions
2
- VERSION = '1.8.3'.freeze
2
+ VERSION = '1.10.0'.freeze
3
3
  end
@@ -21,6 +21,7 @@ module EffectiveRegions
21
21
 
22
22
  def create_migration_file
23
23
  @regions_table_name = ':' + EffectiveRegions.regions_table_name.to_s
24
+ @ck_assets_table_name = : + EffectiveRegions.ck_assets_table_name.to_s
24
25
  migration_template ('../' * 3) + 'db/migrate/01_create_effective_regions.rb.erb', 'db/migrate/create_effective_regions.rb'
25
26
  end
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_regions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.3
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-10 00:00:00.000000000 Z
11
+ date: 2021-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: effective_resources
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: effective_ckeditor
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +52,20 @@ dependencies:
38
52
  - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sassc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  description: Create editable content regions within your existing, ordinary ActionView::Base
42
70
  views, and update content with an actually-good full-screen WYSIWYG editor.
43
71
  email:
@@ -49,21 +77,24 @@ files:
49
77
  - MIT-LICENSE
50
78
  - README.md
51
79
  - Rakefile
80
+ - app/assets/config/effective_regions_manifest.js
52
81
  - app/assets/images/effective/templates/image_and_title.png
53
82
  - app/assets/javascripts/ck_assets.js.coffee
54
83
  - app/assets/javascripts/effective/snippets/current_date_time.js.coffee
55
84
  - app/assets/javascripts/effective/snippets/current_user_info.js.coffee
85
+ - app/assets/javascripts/effective/snippets/drop_cap.js.coffee
56
86
  - app/assets/stylesheets/ck_assets.scss
87
+ - app/assets/stylesheets/drop_cap.scss
57
88
  - app/controllers/effective/ck_assets_controller.rb
58
89
  - app/controllers/effective/regions_controller.rb
59
90
  - app/helpers/effective_regions_controller_helper.rb
60
91
  - app/helpers/effective_regions_helper.rb
61
92
  - app/models/concerns/acts_as_regionable.rb
62
- - app/models/effective/access_denied.rb
63
93
  - app/models/effective/ck_asset.rb
64
94
  - app/models/effective/region.rb
65
95
  - app/models/effective/snippets/current_date_time.rb
66
96
  - app/models/effective/snippets/current_user_info.rb
97
+ - app/models/effective/snippets/drop_cap.rb
67
98
  - app/models/effective/snippets/snippet.rb
68
99
  - app/models/effective/templates/image_and_title.rb
69
100
  - app/models/effective/templates/template.rb
@@ -73,6 +104,7 @@ files:
73
104
  - app/views/effective/ck_assets/index.html.haml
74
105
  - app/views/effective/snippets/_current_date_time.html.haml
75
106
  - app/views/effective/snippets/_current_user_info.html.haml
107
+ - app/views/effective/snippets/_drop_cap.html.haml
76
108
  - app/views/effective/templates/_image_and_title.html.haml
77
109
  - app/views/effective/templates/_three_column.html.haml
78
110
  - app/views/effective/templates/_two_column.html.haml
@@ -89,7 +121,7 @@ homepage: https://github.com/code-and-effect/effective_regions
89
121
  licenses:
90
122
  - MIT
91
123
  metadata: {}
92
- post_install_message:
124
+ post_install_message:
93
125
  rdoc_options: []
94
126
  require_paths:
95
127
  - lib
@@ -104,8 +136,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
136
  - !ruby/object:Gem::Version
105
137
  version: '0'
106
138
  requirements: []
107
- rubygems_version: 3.0.3
108
- signing_key:
139
+ rubygems_version: 3.1.2
140
+ signing_key:
109
141
  specification_version: 4
110
142
  summary: Create editable content regions within your existing, ordinary ActionView::Base
111
143
  views, and update content with an actually-good full-screen WYSIWYG editor.
@@ -1,17 +0,0 @@
1
- unless defined?(Effective::AccessDenied)
2
- module Effective
3
- class AccessDenied < StandardError
4
- attr_reader :action, :subject
5
-
6
- def initialize(message = nil, action = nil, subject = nil)
7
- @message = message
8
- @action = action
9
- @subject = subject
10
- end
11
-
12
- def to_s
13
- @message || I18n.t(:'unauthorized.default', :default => 'Access Denied')
14
- end
15
- end
16
- end
17
- end