Agile Web Development

Build it. Launch it. Love it.

acts_as_checkpoint

This plugin provides a very simple syntax for setting up complex permissions in controllers and/or ActiveRecord models.

Tests are forthcoming, sorry.

Example for Controllers

Role-oriented approach:

  class YourController < ApplicationController
        acts_as_checkpoint :get_user_method => :current_user
        controller_allows :administrator, :to => [ :index, :show, :destroy ]
        controller_allows :registered_user, :to => [ :index, :show, :new, :edit, :create, :update ]
        controller_allows :anonymous_user, :to => [ :index, :show ]
  end

Action-oriented approach:

  class YourController < ApplicationController
        acts_as_checkpoint :get_user_method => :current_user
        controller_allows :index  , :by => [ :administrator, :registered_user, :anonymous_user ]
        controller_allows :show   , :by => [ :administrator, :registered_user ]
        controller_allows :new    , :by => :registered_user
        controller_allows :edit   , :by => :registered_user
        controller_allows :create , :by => :registered_user
        controller_allows :update , :by => :registered_user
        controller_allows :destroy, :by => :administrator
  end

The two approaches may be interspersed at will… just try not to get confused.

Example for Models

  class Dog < ActiveRecord::Base
        belongs_to :owner

        acts_as_checkpoint
        model_may :eat, :drink, :lick
        model_allows :lick, :by => :self
        model_allows :pet, :by => :owner
  end

  class Human < ActiveRecord::Base
        has_many :dogs

        acts_as_checkpoint
        model_may :pet
        model_allows :lick, :by => :dogs
  end

  human = Human.new
  dog = Dog.new( :owner => human )

  human.can_pet?( dog )
  # => true
  dog.can_eat?( human )
  # => false
  dog.can_lick?( human )
  # => true

Vitals

Home http://github.com/blangenfeld/acts_as_checkpoint/tree/master
Repository git://github.com/blangenfeld/acts_as_checkpoint.git
License Rails' (MIT)
Tags Tag_red
Rating (2 votes)
Owner Brian Langenfeld
Created 12 August 2008

Comments

  • Avatar
    max
    14 August 2008

    I can't seem to get the model permissions to work, I'm using the example found on test/user.rb ... but nothing works

Add a comment