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.



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