Module: Sand

Defined in:
lib/sand.rb,
lib/sand/util.rb,
lib/sand/helpers.rb,
lib/sand/version.rb,
lib/sand/middleware.rb,
lib/sand/policy_finder.rb

Defined Under Namespace

Modules: Helpers, Util Classes: AuthorizationNotPerformed, Error, Middleware, NotAuthorizedError, NotDefinedError, PolicyFinder, RequestMethods, ScopeNotPerformed

Constant Summary collapse

VERSION =
'0.1.2'.freeze

Class Method Summary collapse

Class Method Details

.authorize(user, record, query) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/sand.rb', line 25

def self.authorize(user, record, query)
  policy = policy!(user, record)

  unless policy.public_send(query)
    raise NotAuthorizedError.new(policy: policy, record: record, query: query) # rubocop:disable Style/RaiseArgs, Metrics/LineLength
  end

  true
end

.policy!(user, record) ⇒ Object



35
36
37
38
# File 'lib/sand.rb', line 35

def self.policy!(user, record)
  policy = PolicyFinder.new(record).policy!
  policy.new(user, record)
end

.policy_scope(user, scope) ⇒ Object



40
41
42
43
# File 'lib/sand.rb', line 40

def self.policy_scope(user, scope)
  policy_scope = PolicyFinder.new(scope).scope!
  policy_scope.new(user, scope).resolve
end