Project

role-authz

0.0
No commit activity in last 3 years
No release in over 3 years
A merb plugin that provides simple role based authorization
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

>= 1.1.3
 Project Readme
RoleAuthz - Simple role-based authorization
===========================================

Roles
------

    class Application < Merb::Controller
      role :name do |operator, target|
        # return true or false, depending on
        # whether or not this operator/target 
        # combination can have this role
      end
      # Examples:
      role :admin do |operator, target|
        operator.respond_to?(:admin) && operator.admin
      end
      role :owner do |operator, target|
        target.respond_to?(:owner) && target.owner == operator
      end
      role :guest do |operator, target|
        operator.nil?
      end
    end

Permissions
-----------

#### For resources:

    class Posts < Application
      authorize Post do
        for_role(:admin).allow(:all)
        for_role(:owner).allow(:all)
        for_role(:guest).allow(:index, :show)
      end
    end

#### For controllers:

    class NotAResourceController < Application
      authorize self do
        for_role(:guest).allow(:foo)
      end
      # foo is just an action
    end

#### Global:

    class Application < Merb::Controller
      # your role definitions
      authorize self do
        for_role(:admin).allow(:all)
      end
    end

Operators (user classes)
------------------------

Operator classes must call authorizable! somewhere. 

#### Example:
    class User
      include DataMapper::Resource
      authorizable!
  
      property :id, Serial
      property :login, String
    end

Operators may use the authorized? method to check authorization.

#### Examples:

    user = User.get(n)
    user.authorized?(:target => @post, :action => :edit)
    user.authorized?(:target => Posts, :action => :new)
    user.authorized?(:role => :admin)