Module: Banken

Extended by:
ActiveSupport::Concern
Defined in:
lib/banken.rb,
lib/banken/error.rb,
lib/banken/version.rb,
lib/banken/loyalty_finder.rb,
lib/generators/banken/install/install_generator.rb,
lib/generators/banken/loyalty/loyalty_generator.rb

Defined Under Namespace

Modules: Generators Classes: AuthorizationNotPerformedError, Error, LoyaltyFinder, LoyaltyScopingNotPerformedError, NotAuthorizedError, NotDefinedError

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.loyalty!(controller_name, user, record = nil) ⇒ Object



29
30
31
# File 'lib/banken.rb', line 29

def loyalty!(controller_name, user, record=nil)
  LoyaltyFinder.new(controller_name).loyalty!.new(user, record)
end

Instance Method Details

#authorize!(record = nil) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/banken.rb', line 34

def authorize!(record=nil)
  @_banken_loyalty_authorized = true

  loyalty = loyalty(record)
  unless loyalty.public_send(banken_query_name)
    raise NotAuthorizedError.new(controller: banken_controller_name, query: banken_query_name, loyalty: loyalty)
  end

  true
end

#banken_loyalty_authorized?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/banken.rb', line 67

def banken_loyalty_authorized?
  !!@_banken_loyalty_authorized
end

#banken_userObject



55
56
57
# File 'lib/banken.rb', line 55

def banken_user
  current_user
end

#loyaltiesObject



71
72
73
# File 'lib/banken.rb', line 71

def loyalties
  @_banken_loyalties ||= {}
end

#loyalty(record = nil, controller_name = nil) ⇒ Object



50
51
52
53
# File 'lib/banken.rb', line 50

def loyalty(record=nil, controller_name=nil)
  controller_name = banken_controller_name unless controller_name
  loyalties[controller_name.to_s] ||= Banken.loyalty!(controller_name, banken_user, record)
end

#permitted_attributes(record) ⇒ Object



45
46
47
48
# File 'lib/banken.rb', line 45

def permitted_attributes(record)
  name = record.class.to_s.demodulize.underscore
  params.require(name).permit(loyalty(record).permitted_attributes)
end

#skip_authorizationObject



59
60
61
# File 'lib/banken.rb', line 59

def skip_authorization
  @_banken_loyalty_authorized = true
end

#verify_authorizedObject



63
64
65
# File 'lib/banken.rb', line 63

def verify_authorized
  raise AuthorizationNotPerformedError unless banken_loyalty_authorized?
end