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

Inherits:
Object
  • Object
show all
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

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