Class: Sequel::Plugins::Privacy::PrivacyDSL

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/sequel/plugins/privacy.rb

Instance Method Summary collapse

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