Module: Protector::Adapters::Sequel::Dataset
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/protector/adapters/sequel/dataset.rb
Overview
Patches Sequel::Dataset
Defined Under Namespace
Classes: Restrictor
Instance Method Summary collapse
- #can?(action, field = false) ⇒ Boolean
- #creatable? ⇒ Boolean
-
#each_with_protector(*args, &block) ⇒ Object
Substitutes
row_proc
with Protector and injects protection scope. -
#protector_defend_graph(relation, subject) ⇒ Object
Injects protection scope for every joined graph association.
-
#protector_meta(subject = protector_subject) ⇒ Object
Gets DSL::Meta::Box of this dataset.
Instance Method Details
#can?(action, field = false) ⇒ Boolean
37 38 39 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 37 def can?(action, field=false) .can?(action, field) end |
#creatable? ⇒ Boolean
33 34 35 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 33 def creatable? model.new.restrict!(protector_subject).creatable? end |
#each_with_protector(*args, &block) ⇒ Object
Substitutes row_proc
with Protector and injects protection scope
47 48 49 50 51 52 53 54 55 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 47 def each_with_protector(*args, &block) return each_without_protector(*args, &block) unless protector_subject? relation = protector_defend_graph(clone, protector_subject) relation = .eval_scope_procs(relation) if .scoped? relation.row_proc = Restrictor.new(protector_subject, relation.row_proc) relation.each_without_protector(*args, &block) end |
#protector_defend_graph(relation, subject) ⇒ Object
Injects protection scope for every joined graph association
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 58 def protector_defend_graph(relation, subject) return relation unless @opts[:eager_graph] @opts[:eager_graph][:reflections].each do |association, reflection| model = reflection[:cache][:class] if reflection[:cache].is_a?(Hash) && reflection[:cache][:class] model = reflection[:class_name].constantize unless model = model..evaluate(subject) relation = .eval_scope_procs(relation) if .scoped? end relation end |
#protector_meta(subject = protector_subject) ⇒ Object
Gets DSL::Meta::Box of this dataset
42 43 44 |
# File 'lib/protector/adapters/sequel/dataset.rb', line 42 def (subject=protector_subject) model..evaluate(subject) end |