Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
91 lines (50 sloc) 3.8 KB


Authority does its best to use semantic versioning.


Models whose authorizer_name is not specified will now check for an authorizer with their own name before falling back to ApplicationAuthorizer. Eg, Comment will look for CommentAuthorizer. Namespacing is respected.


Bugfix for Rails 3.1 - apparently its class_attribute method stepped on instance methods even when given :instance_reader => false


Bugfix - make authority_resource inheritable. For instance, if you call authorize_actions_for Llama in one controller, a child controller does the same unless told otherwise.


The controller method name given to authorize_actions_for no longer has to be public. (We don't want to force controllers to make any method public that shouldn't be a routable action.)


Controller method authorize_actions_for can now be given a method name to dynamically determine the class to authorize. For example, authorize_actions_for :model_class will call the model_class method on the controller instance at request time.


  • Updated can? to only pass options if it was given options.


  • Had second thought and reworked can?(:action) to call Application_authorizer.authorizes_to_#{action}?. Ensured it's backwards compatible for the few people who started using this in the last day or so.


  • Added generic current_user.can?(:mimic_lemurs) for cases where there is no resource to work with. This calls a corresponding class method on ApplicationAuthorizer, like ApplicationAuthorizer.can_mimic_lemurs?.
  • Renamed authority_action to authority_actions (plural) to reflect the fact that you can set multiple actions at once. Use of the old method will raise a deprecation warning.
  • Lots of test cleanup so that test output is clearer - run rspec with --format doc --order default to see it.


Allow passing options hash to authorize_action_for, like authorize_action_for(@llama, :sporting => @hat_style).


Allow passing options hash, like current_user.can_create?(Comment, :for => @post).


Documentation and test cleanup.


  • Breaking change: models now assume their authorizer is ApplicationAuthorizer unless told otherwise. Generator creates a blank ApplicationAuthorizer. This, combined with the change in v1.1.0, makes the default_strategy proc obsolete in favor of straightforward inheritance of a default method, so support for config.default_strategy is removed.
  • Added accessors to Authority::SecurityViolation for user, action and resource, for use in custom security violation handlers.


  • Added Authority::Authorizer.default class method which is called before the default_strategy proc and delegates to that proc. This can be overridden per authorizer.


  • Added config.security_violation_handler so users can specify which controller method to use when rescuing SecurityViolations
  • Removed generator to make blank authorizers. On further consideration, one authorizer per model is counterproductive for most use cases, and I'd rather not encourage misuse.


Added generator to make blank authorizers. See rails g authority:authorizers --help.


  • Rename controller methods (again):
    • authorize_actions_on => authorize_actions_for
    • authorize_action_on => authorize_action_for
  • Cleaned up authorize_action_for to only accept a resource argument (the current user is determined by authority_user)


Rename controller methods:

  • check_authorization_on => authorize_actions_on
  • check_authorization_for => authorize_action_on


  • Renamed config.authority_actions to config.controller_action_map.


Initial release (basically)

Jump to Line
Something went wrong with that request. Please try again.