Class: Sequel::Plugins::Privacy::PrivacyDSL
- Inherits:
-
Object
- Object
- Sequel::Plugins::Privacy::PrivacyDSL
- Extended by:
- T::Sig
- Defined in:
- lib/sequel/plugins/privacy.rb
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.
90 91 92 |
# File 'lib/sequel/plugins/privacy.rb', line 90 def initialize(model_class) @model_class = model_class end |
Instance Method Details
#association(name, &block) ⇒ Object
109 110 111 112 113 114 |
# File 'lib/sequel/plugins/privacy.rb', line 109 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
95 96 97 98 |
# File 'lib/sequel/plugins/privacy.rb', line 95 def can(action, *policies) resolved = resolve_policies(policies) @model_class.register_policies(action, resolved) end |
#field(name, *policies) ⇒ Object
101 102 103 104 105 106 |
# File 'lib/sequel/plugins/privacy.rb', line 101 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
117 118 119 |
# File 'lib/sequel/plugins/privacy.rb', line 117 def finalize! @model_class.finalize_privacy! end |