Project

turnstile

0.0
No commit activity in last 3 years
No release in over 3 years
Simple authorization for rails
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Turnstile is a simple authorization module. With turnstile you’ll be able to define rules for each role to access your controllers and views.

Roles, Rules and Privileges¶ ↑

You can define all roles, all rules and all privileges in the config file, placed in config/initializers/turnstile.rb

Privileges¶ ↑

privilege :read do
   allows_to :show, :index
   denies_to :destroy, :create
end

privilege :manage do
  allows_to :create, :new
  allows_to :destroy
end

Rules to Roles¶ ↑

role :reader do
  can :read => :posts
  can :read => :comments
end

role :admin do
  inherits :reader
  can :manage => :posts
end

The Default Role¶ ↑

You need to set a role to be used when the current user has no role

default_is :reader

An example of config file can be found in config/initializers/turnstile.rb in this repo.

The User Model¶ ↑

So far it is hardcoded, so you need a string column called

user_role

For example, using Active Record, in your migration, put:

t.string :user_role

or for Mongoid:

field :user_role

and be sure to have a method that returns the current user using

current_user

Authorization makes more sense when used with authentication, the most authentication libs have a method called current_user that returns the current user. dah =/ So you probably won’t need to do that, but if you need to, Turnstile also can verify user permission trough…

Thread.current['current_user'] = User...

So set it and have fun, otherwise, the default role will always be set.

Controllers¶ ↑

For each controller that you want to monitorate just call:

before_filter :verify_role_permissions!

Views¶ ↑

To access the current role in your views use

current_role

Then for example, you can check its permissions with

current_role.is_allowed_to? :create, :posts

Demonstration¶ ↑

There is something that i call blongloid !lol! in my repos. Blongoid is a blog prototype using Rails 3, Mongoid, Devise and Turnstile.

You can check there some using of Turnstile.