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
2025
2026
 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