Class: Heimdallr::ResourceImplementation
- Inherits:
-
Object
- Object
- Heimdallr::ResourceImplementation
- Defined in:
- lib/heimdallr/resource_implementation.rb
Defined Under Namespace
Classes: ResourceLoader
Class Method Summary collapse
- .add_before_filter(controller_class, method, options) ⇒ Object
- .prepare_options(controller_class, options) ⇒ Object
Instance Method Summary collapse
- #authorize_resource(resource) ⇒ Object
-
#initialize(controller, options) ⇒ ResourceImplementation
constructor
A new instance of ResourceImplementation.
- #load_and_authorize_resource ⇒ Object
- #load_resource ⇒ Object
Constructor Details
#initialize(controller, options) ⇒ ResourceImplementation
Returns a new instance of ResourceImplementation.
28 29 30 31 |
# File 'lib/heimdallr/resource_implementation.rb', line 28 def initialize(controller, ) @controller = controller @options = end |
Class Method Details
.add_before_filter(controller_class, method, options) ⇒ Object
3 4 5 6 7 8 9 10 11 12 |
# File 'lib/heimdallr/resource_implementation.rb', line 3 def self.add_before_filter(controller_class, method, ) , = Heimdallr::ResourceImplementation. controller_class, controller_class.send :own_heimdallr_options=, controller_class.class_eval do before_filter do |controller| Heimdallr::ResourceImplementation.new(controller, ).send method end end end |
.prepare_options(controller_class, options) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/heimdallr/resource_implementation.rb', line 14 def self.(controller_class, ) = .dup [:resource] ||= controller_class.name.sub(/Controller$/, '').singularize.underscore filter_keys = [:only, :except] = filter_keys.inject({}) do |hash, key| hash[key] = .delete key if .has_key? key hash end [, ] end |
Instance Method Details
#authorize_resource(resource) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/heimdallr/resource_implementation.rb', line 43 def (resource) case @controller.params[:action] when 'new', 'create' raise Heimdallr::AccessDenied, "Cannot create model" unless resource.creatable? resource.assign_attributes resource.reflect_on_security[:restrictions].fixtures[:create] when 'edit', 'update' raise Heimdallr::AccessDenied, "Cannot update model" unless resource.modifiable? resource.assign_attributes resource.reflect_on_security[:restrictions].fixtures[:update] when 'destroy' raise Heimdallr::AccessDenied, "Cannot delete model" unless resource.destroyable? end end |
#load_and_authorize_resource ⇒ Object
37 38 39 40 41 |
# File 'lib/heimdallr/resource_implementation.rb', line 37 def resource = ResourceLoader.new(@controller, @options, :restricted => true).load resource unless @controller.send :skip_authorization_check? resource end |
#load_resource ⇒ Object
33 34 35 |
# File 'lib/heimdallr/resource_implementation.rb', line 33 def load_resource ResourceLoader.new(@controller, @options).load end |