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
Contributing
- Fork it ( https://github.com/isaacsloan/petergate/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request