Module: Authority

Defined in:
lib/authority.rb,
lib/authority/railtie.rb,
lib/authority/version.rb,
lib/authority/abilities.rb,
lib/authority/authorizer.rb,
lib/authority/controller.rb,
lib/authority/configuration.rb,
lib/authority/user_abilities.rb,
lib/authority/security_violation.rb,
lib/generators/authority/install_generator.rb

Defined Under Namespace

Modules: Abilities, Controller, Generators, UserAbilities Classes: Authorizer, Configuration, NoAuthorizerError, Railtie, SecurityViolation

Constant Summary collapse

VERSION =
"2.5.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject

Returns the value of attribute configuration.



47
48
49
# File 'lib/authority.rb', line 47

def configuration
  @configuration
end

Class Method Details

.abilitiesHash

NOTE: once this method is called, the library has started meta programming and abilities should no longer be modified

Returns:

  • (Hash)

    list of abilities, mapping verbs and adjectives, like :create => ‘creatable’



14
15
16
# File 'lib/authority.rb', line 14

def self.abilities
  configuration.abilities.freeze
end

.action_authorized?(action, resource, user, options = {}) ⇒ Boolean

Returns:

  • (Boolean)


41
42
43
44
# File 'lib/authority.rb', line 41

def self.action_authorized?(action, resource, user, options = {})
  resource_and_maybe_options = [resource, options].tap {|args| args.pop if args.last == {}}
  user.send("can_#{action}?", *resource_and_maybe_options)
end

.adjectivesArray

Returns values from adjectives method.

Returns:

  • (Array)

    values from adjectives method



24
25
26
# File 'lib/authority.rb', line 24

def self.adjectives
  abilities.values
end

.configure {|configuration| ... } ⇒ Object

Yields:



50
51
52
53
54
55
56
# File 'lib/authority.rb', line 50

def self.configure
  self.configuration ||= Configuration.new
  yield(configuration) if block_given?
  require_authority_internals!

  configuration
end

.enforce(action, resource, user, options = {}) ⇒ Model

Returns resource instance.

Parameters:

  • action (Symbol)
  • resource (Model)

    instance

  • user (User)

    instance

  • options, (Hash)

    arbitrary options hash to delegate to the authorizer

Returns:

  • (Model)

    resource instance

Raises:



34
35
36
37
38
39
# File 'lib/authority.rb', line 34

def self.enforce(action, resource, user, options = {})
  unless action_authorized?(action, resource, user, options)
    raise SecurityViolation.new(user, action, resource) 
  end
  resource
end

.loggerObject



58
59
60
# File 'lib/authority.rb', line 58

def self.logger
  @logger ||= configuration.logger
end

.verbsArray

Returns keys from adjectives method.

Returns:

  • (Array)

    keys from adjectives method



19
20
21
# File 'lib/authority.rb', line 19

def self.verbs
  abilities.keys
end