Module: Strongbolt::BoltedController::ClassMethods
- Defined in:
- lib/strongbolt/bolted_controller.rb
Instance Method Summary collapse
-
#actions_mapping ⇒ Object
Returns the actions mapping of this controller.
-
#model_for_authorization ⇒ Object
Returns the model used for authorization, using controller name if not defined.
-
#model_for_authorization=(model) ⇒ Object
Allows defining a specific model for this controller, if it cannot be infer from the controller name.
-
#render_with_authorization ⇒ Object
Render with authorization.
-
#render_without_authorization(*actions) ⇒ Object
Render without authorization, for better performance.
-
#skip_all_authorization(opts = {}) ⇒ Object
Skip all authorization checking for the controller, or a subset of actions.
-
#skip_controller_authorization(opts = {}) ⇒ Object
Skips controller authorization check for this controller No argument given will skip for all actions, and can be passed only: [] or except: [].
Instance Method Details
#actions_mapping ⇒ Object
Returns the actions mapping of this controller
120 121 122 123 |
# File 'lib/strongbolt/bolted_controller.rb', line 120 def actions_mapping # Defaults to a duplicate of the standard mapping @actions_mapping ||= ACTIONS_MAPPING.dup end |
#model_for_authorization ⇒ Object
Returns the model used for authorization, using controller name if not defined
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/strongbolt/bolted_controller.rb', line 35 def if .present? else # We cannot just do controller_name.classify as it doesn't keep the modules # We'll also check demoduling one module after the other for case when # the controller and/or the model have different modules full_name = name.sub('Controller', '').classify # Split by :: splits = full_name.split('::') # While we still have modules to test while splits.size >= 1 begin return constantize_model splits.join('::') rescue Strongbolt::ModelNotFound ensure # Removes first element splits.shift end end raise Strongbolt::ModelNotFound, "Model for controller #{controller_name} wasn't found" end end |
#model_for_authorization=(model) ⇒ Object
Allows defining a specific model for this controller, if it cannot be infer from the controller name
21 22 23 24 25 26 27 28 29 |
# File 'lib/strongbolt/bolted_controller.rb', line 21 def (model) = case model when Class then model when String then constantize_model(model) when nil then nil else raise ArgumentError, 'Model for authorization must be a Class or the name of the Class' end end |
#render_with_authorization ⇒ Object
Render with authorization
113 114 115 |
# File 'lib/strongbolt/bolted_controller.rb', line 113 def self. = nil end |
#render_without_authorization(*actions) ⇒ Object
Render without authorization, for better performance
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/strongbolt/bolted_controller.rb', line 92 def (*actions) self. = [*actions] class_eval do # # It needs to be created afterward, # No idea why # def render(*args) if Strongbolt. { _render(*args) } else _render(*args) end end end end |
#skip_all_authorization(opts = {}) ⇒ Object
Skip all authorization checking for the controller, or a subset of actions
73 74 75 76 |
# File 'lib/strongbolt/bolted_controller.rb', line 73 def (opts = {}) opts around_action :disable_authorization, opts end |
#skip_controller_authorization(opts = {}) ⇒ Object
Skips controller authorization check for this controller No argument given will skip for all actions, and can be passed only: [] or except: []
64 65 66 67 |
# File 'lib/strongbolt/bolted_controller.rb', line 64 def (opts = {}) opts = { raise: false }.merge(opts) if Rails::VERSION::MAJOR >= 5 skip_before_action :check_authorization, opts end |