diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..eb484769 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2011 Florent Monbillard + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README b/README new file mode 100644 index 00000000..d666980d --- /dev/null +++ b/README @@ -0,0 +1,80 @@ += Rolify + +Very simple Roles library without any authorization enforcement (built to use with cancan) supporting scope on object. + +Let's see an example: + + user.is_moderator?(Forum.first) => # return false if user is moderator of another Forum + +This library was intended to be used with CanCan[https://github.com/ryanb/cancan] and devise[https://github.com/plataformatec/devise/] but should be generic enough to be used by any other authentication/authorization solutions. + +== Requirements + +* >= Rails 3 +* ActiveRecord ORM + +== Installation + +In Rails 3, add this to your Gemfile and run the +bundle+ command. + + gem "rolify" + +Alternatively, you can install it as a plugin. + + rails plugin install git://github.com/ryanb/cancan.git + +== Getting Started + +=== 1. Generate Role Modle + +First, create your Role model and migration file using this generator: + + rails g rolify:role Role User + +Role and User classes are the default. You can specify any Role class name you want. This is completly a new file so any name can do the job. +For the User class name, you would probably use the one provided by your authentication solution. rolify just adds some class methods in an existing User class. + +=== 2. Run the migration + +Let's migrate ! + + rake db:migrate + +=== 3. Add a role to a user + +To define a global role: + + user = User.find(1) + user.has_role "admin" + +To define a role scoped to a resource + + user = User.find(2) + user.has_role "moderator", Forum.first + +That's it ! + +=== 4. Check roles + +To check if a user has a global role + + user = User.find(1) + user.has_role? "admin" + # => true + +To check if a user has a role scoped to a resource + + user = User.find(2) + user.has_role "moderator", Forum.first + # => true + user.has_role "moderator", Forum.last + # => false + +== Questions or Problems? + +If you have any issues with rolify which you cannot find the solution to in the tiny README[https://github.com/EppO/rolify], please add an {issue on GitHub}[https://github.com/EppO/rolify/issues] or fork the project and send a pull request. + +== TODO + +* Write specs +* Write code diff --git a/lib/generators/rolify/role/.role_generator.rb.swp b/lib/generators/rolify/role/.role_generator.rb.swp deleted file mode 100644 index e4b9d634..00000000 Binary files a/lib/generators/rolify/role/.role_generator.rb.swp and /dev/null differ