No commit activity in last 3 years
Rails authorization plugin
 Development
 Dependencies
 Project Readme

Roleify

A Rails authorization plugin

Dependent on Clearance (should be configurable in the future though)

Example

Make sure your User object has a "role" attribute (String).

Add an initializer

Roleify::Role.configure(%w(role_a role_b role_c role_d role_e)) do
  {
    :role_a => { :issues =>  :all },
    :role_b => { :issues => "index" },
    :role_c => { :dashboard_issues => :all },
    :role_d => { :all => :all },
    :role_e => { :all => :all, :except => :issues }
  }
end

In the example above "role_a", "role_b" and "role_c" are the roles you are defining. The block contains the rules for these roles. There is no need to define an "admin" role, since it's added by default.

  • Users with role "role_a" are allowed to access all actions of IssuesController.
  • Users with role "role_b" are only allowed to access the index action of the IssuesController.
  • Users with role "role_c" are allowed to access all actions of Dashboard::IssuesController.
  • Users with role "role_d" are allowed to access all actions of all controllers.
  • Users with role "role_e" are allowed to access all actions of all controllers except for the actions of the issues controller.
  • Users with role "admin" are allowed to access all actions of all controllers.

The controller

class IssuesController < ActionController::Base
  include Clearance::Authentication
  include Roleify::RoleifyableController
end

The User model

class User < ActiveRecord::Base
  include Clearance::User
  include Roleify::RoleifyableModel
end

The Helper

module ApplicationHelper
  include Roleify::RoleifyableHelper
end

The View

<% allowed?(Roleify::Role::ROLE_A) do %>
  whatever you want for role_a eyes only
<% end %>

Extra's

Constants: Roleify::Role::ADMIN, Roleify::Role::ROLE_A, Roleify::Role::ROLE_B

Named scopes are automatically added: User.admins, User.role_as, User.role_bs

Methods: User.admin?, User.role_a?, User.role_b?

Copyright (c) 2009 Koen Van der Auwera - 10to1, released under the MIT license