Petergate

Easy to use and read action and content based authorizations.

Installation

Add this line to your application's Gemfile:

gem 'petergate'

And then execute:

bundle

Or install it yourself as:

gem install petergate

Make sure you already have a User model setup. Works great with devise.

Run generator to install it.

rails g petergate:install
rake db:migrate

This will add:

petergate(roles: [:admin])

to your User model.

Usage

Setup permissions in your controllers the same as you would for a before filter like so:

access all: [:show, :index], user: AllRest

Inside your views you can use logged_in?(:admin, :customer, :etc) to show or hide content.

<%= link_to "destroy", destroy_listing_path(listing) if logged_in?(:admin, :customer, :etc) %>

If you need to access available roles within your project you can by calling:

User::ROLES
# or from an instance
User.first.available_roles
# ROLES is a CONSTANT and will still work from within the User model instance methods like in this default setter:

def roles=(v)
  self[:roles] = v.map(&:to_sym).to_a.select{|r| r.size > 0 && ROLES.include?(r)}
end

Credits

PeterGate is written and maintaned by Isaac Sloan and friends.

Currently funded and maintained by RingSeven

RingSeven

Contributing

  1. Fork it ( https://github.com/isaacsloan/petergate/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request