Class: Maglev::Authorization

Inherits:
Object
  • Object
show all
Defined in:
lib/maglev/authorization.rb

Instance Method Summary collapse

Constructor Details

#initialize(adapter: Maglev.configuration.authorization_adapter) ⇒ Authorization

Returns a new instance of Authorization.



8
9
10
# File 'lib/maglev/authorization.rb', line 8

def initialize(adapter: Maglev.configuration.authorization_adapter)
  @adapter = adapter
end

Instance Method Details

#authorize(record:, user:) ⇒ Object

Raises:



22
23
24
25
26
27
28
29
# File 'lib/maglev/authorization.rb', line 22

def authorize(record:, user:)
  return true unless configured? && user

  result = @adapter.authorize(record: record, user: user)
  raise AuthorizationError, "Maglev authorization denied #{record.class.name}##{record_id(record)}" if result == false

  true
end

#authorized?(record:, user:) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
34
35
# File 'lib/maglev/authorization.rb', line 31

def authorized?(record:, user:)
  authorize(record: record, user: user)
rescue AuthorizationError
  false
end

#configured?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/maglev/authorization.rb', line 12

def configured?
  !@adapter.nil?
end

#scope(model:, user:) ⇒ Object



16
17
18
19
20
# File 'lib/maglev/authorization.rb', line 16

def scope(model:, user:)
  return model.all unless configured? && user

  @adapter.scope(model: model, user: user)
end