Class: Sequel::Plugins::Privacy::PrivacyDSL
- Inherits:
-
Object
- Object
- Sequel::Plugins::Privacy::PrivacyDSL
- Extended by:
- T::Sig
- Defined in:
- lib/sequel/plugins/privacy.rb
Overview
DSL class for defining privacy policies in a block
Instance Method Summary collapse
- #association(name, &block) ⇒ Object
- #can(action, *policies) ⇒ Object
- #field(name, *policies) ⇒ Object
- #finalize! ⇒ Object
-
#initialize(model_class) ⇒ PrivacyDSL
constructor
A new instance of PrivacyDSL.
Constructor Details
#initialize(model_class) ⇒ PrivacyDSL
Returns a new instance of PrivacyDSL.
98 99 100 |
# File 'lib/sequel/plugins/privacy.rb', line 98 def initialize(model_class) @model_class = model_class end |
Instance Method Details
#association(name, &block) ⇒ Object
127 128 129 130 131 132 |
# File 'lib/sequel/plugins/privacy.rb', line 127 def association(name, &block) resolver = ->(policies) { resolve_policies(policies) } dsl = AssociationPrivacyDSL.new(@model_class, name, resolver) dsl.instance_eval(&block) dsl.finalize_association! end |
#can(action, *policies) ⇒ Object
104 105 106 107 |
# File 'lib/sequel/plugins/privacy.rb', line 104 def can(action, *policies) resolved = resolve_policies(policies) @model_class.register_policies(action, resolved) end |
#field(name, *policies) ⇒ Object
111 112 113 114 115 116 |
# File 'lib/sequel/plugins/privacy.rb', line 111 def field(name, *policies) resolved = resolve_policies(policies) policy_name = :"view_#{name}" @model_class.register_policies(policy_name, resolved) @model_class.register_protected_field(name, policy_name) end |
#finalize! ⇒ Object
136 137 138 |
# File 'lib/sequel/plugins/privacy.rb', line 136 def finalize! @model_class.finalize_privacy! end |