Module: Archipelago::PunditAdapter

Defined in:
lib/archipelago/pundit_adapter.rb

Instance Method Summary collapse

Instance Method Details

#authorize(record, query = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/archipelago/pundit_adapter.rb', line 5

def authorize(record, query = nil)
  query ||= infer_pundit_query
  policy = policy(record)

  unless policy.public_send(query)
    raise Archipelago::Forbidden, "not allowed to #{query} this #{record.class}"
  end

  record
end

#policy(record) ⇒ Object



16
17
18
19
20
21
# File 'lib/archipelago/pundit_adapter.rb', line 16

def policy(record)
  klass = "#{record.class}Policy".safe_constantize
  raise Archipelago::Forbidden, "no policy found for #{record.class}" unless klass

  klass.new(current_user, record)
end