Permissions
A small library for adding permissions to an application for authorization.
Installation
gem install permissions
Usage
API
for(*keys, &block)
: Creates a permission with the given block for each key.
authorize?(key, *args)
: Runs permission block for key with args.
deep_dup
: Copies permissions to a new object.
Authorizable
permissions
: Must be implemented by your application.
authorize_for?(key, *args)
Based off the implemented permissions, calls block with self and args for the given key.
Example
require 'permissions'
class User
include Permissions::Authorizable
def initialize()
@permissions =
end
end
class Command
attr_reader :user
def initialize(user)
@user = user
end
end
= Permissions.new
.for(Command) { |user, command| user == command.user }
user = User.new()
foo = Command.new(user)
= Command.new(nil)
user.(Command, foo) # true
user.(Command, ) # false
.(Command, user, foo) # true
.(Command, user, ) # false