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.
95 96 97 |
# File 'lib/sequel/plugins/privacy.rb', line 95 def initialize(model_class) @model_class = model_class end |
Instance Method Details
#association(name, &block) ⇒ Object
114 115 116 117 118 119 |
# File 'lib/sequel/plugins/privacy.rb', line 114 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
100 101 102 103 |
# File 'lib/sequel/plugins/privacy.rb', line 100 def can(action, *policies) resolved = resolve_policies(policies) @model_class.register_policies(action, resolved) end |
#field(name, *policies) ⇒ Object
106 107 108 109 110 111 |
# File 'lib/sequel/plugins/privacy.rb', line 106 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
122 123 124 |
# File 'lib/sequel/plugins/privacy.rb', line 122 def finalize! @model_class.finalize_privacy! end |