0.0
No release in over 3 years
Low commit activity in last 3 years
A gem for resource manage based on role
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.2
~> 13.0

Runtime

 Project Readme

RoleMaking

Used for role-based resource management, based on the gem cancancan, like the ability.rb,you need define resource in resource.rb

Installation

Add this line to your application's Gemfile:

gem 'role_making'

And then execute:

$ bundle

Or install it yourself as:

$ gem install role_making

Usage

rails generate role_making NAME [ROLE_CNAME] [options]

for user ability you can add following in cancancan ability.rb:

  user ||= User.new

  if user.has_role?(:admin)
    can :manager,:all
  end

  Role.all_without_reserved.each do |role|
    next unless user.has_role?(role.name)
    role.role_resources.each do |role_resource|
      resource = Resource.find_by_name(role_resource.resource_name)
      if resource[:behavior]
        block = resource[:behavior]
        can resource[:verb],resource[:object] do |object|
          block.call(user,object)
        end
      else
        can resource[:verb],resource[:object]
      end
    end

  end

Example:

  rails generate role_making user
  or
  rails generate role_making user Role

This will create:

db/migrate/201506250001_role_making_create_roles.rb
db/migrate/201506250002_role_making_create_role_resources.rb
app/models/role.rb
app/models/role_resource.rb
add "role_making" to user.rb

Define resource

#with block condition
group :kefu do
  resource [:read,:update,:destroy], Post do |user,post|
    admin != user
  end

  resource :create,User

end


#with hash condition
group :kefu do
  resource :edit, Post , type: 3 
end

#if the condition need eval,you can do like this
group :kefu do
  resource :edit, Post , con: {user_id: 'user.id'} 
end


#with customize resource name

group :kefu do
  resource :edit, Post , res_name: 'Edit Post'
end


## Contributing

1. Fork it ( https://github.com/javyliu/role_making/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request