acl
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Round of pair programming. We tried writing acl based on YaAcl
Round of pair programming. We tried writing acl based on [YaAcl](https://github.com/mokevnin/ya_acl)

example syntax:

```ruby
acl = Acl.build do
  roles do
    role :admin
    role :another_user
    role :editor
    role :operator
  end

  asserts do
    assert :first, [:var] do
      var
    end

    assert :another, [:first] do
      statuses = [1, 2]
      statuses.include? first
    end

    assert :another2, [:first] do
      !!first
    end

    assert :another3, [:first] do
      statuses = [1, 2]
      statuses.include? first
    end

    assert :another4, [:first, :second] do
      first == second
    end
  end

  resources :admin do
    resource :name, [:editor, :operator] do
      privilege :create, :admin do
        assert :first, [:admin, :another_user]
      end
      privilege :update do
        assert :another, [:editor]
        assert :another2, [:editor, :operator]
        assert :another3, [:operator]
        assert :another4, [:operator]
      end
    end
  end
end

acl.allow?(:name, :update, [:another_user])
acl.allow?(:name, :update, [:editor], :first => true, :second => false)
acl.allow?(:name, :update, [:editor], :first => false, :second => true)
acl.allow?(:name, :update, [:editor], :first => 1, :second => true)
acl.check!(:name, :create, [:admin], :var => 2)
acl.allow?(:name, :update, [:editor], :first => 3, :second => false)
acl.allow?(:name, :update, [:operator], :first => true, :second => true)
acl.allow?(:name, :update, [:operator], :first => 1, :second => 1)
acl.allow?(:name, :update, [:operator], :first => 3, :second => 3)
```

* acl#allow? will be return true/false
* acl#check will be return instance of object Acl::Result
* acl#check! will be raised if false

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。