roles 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +4 -1
- data/README.md +17 -11
- data/lib/roles/railtie.rb +0 -8
- data/lib/roles/role.rb +1 -1
- data/lib/roles/version.rb +1 -1
- metadata +2 -2
data/CHANGELOG.rdoc
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
# Roles
|
2
2
|
|
3
|
-
Roles is an extremely simple roles gem inspired by rolify.
|
3
|
+
Roles is an extremely simple roles gem inspired by [rolify](https://github.com/EppO/rolify).
|
4
4
|
|
5
5
|
This library is recommended to be used with [CanCan](https://github.com/ryanb/cancan) and [devise](https://github.com/plataformatec/devise).
|
6
6
|
|
7
|
+
## Why Roles
|
8
|
+
|
9
|
+
Look at this discussion: [comment](https://github.com/EppO/rolify/issues/80#issuecomment-7790341)
|
10
|
+
|
11
|
+
In a word, Rolify uses two tables `roles` and `users_roles` while Roles only uses one table `roles`.
|
12
|
+
|
7
13
|
## Quick Start
|
8
14
|
|
9
15
|
```ruby
|
@@ -12,6 +18,7 @@ This library is recommended to be used with [CanCan](https://github.com/ryanb/ca
|
|
12
18
|
user.has_role?(:admin) # if user is admin globally
|
13
19
|
user.has_role?(:admin, Organization) # if user is admin for Organization type
|
14
20
|
user.has_role?(:admin, Organization.first) # if user is not admin of the first organization
|
21
|
+
user.role_names(instance = nil) # => returns role names of current user, optionally scoped by Class, instance or non-scoped(globally)
|
15
22
|
|
16
23
|
# grant roles
|
17
24
|
user.add_role(:admin) # a global admin
|
@@ -32,20 +39,20 @@ user.has_role? :moderator, Forum.first # => false
|
|
32
39
|
user.has_role? :moderator, Forum.last # => false
|
33
40
|
|
34
41
|
# query about users
|
35
|
-
Forum.users_with_role(role = nil) => returns all users with roles defined on Forum
|
36
|
-
forum.users_with_role => returns users with a role defined of current instance
|
37
|
-
User.with_role(role, resource = nil) => returns all users with the given role, optionally scoped by Class, instance or non-scoped(globally)
|
42
|
+
Forum.users_with_role(role = nil) # => returns all users with roles defined on Forum
|
43
|
+
forum.users_with_role(role = nil) # => returns users with a role defined of current instance
|
44
|
+
User.with_role(role, resource = nil) # => returns all users with the given role, optionally scoped by Class, instance or non-scoped(globally)
|
38
45
|
|
39
46
|
# query about resources
|
40
|
-
user.
|
41
|
-
|
47
|
+
user.resources_with_role(Project, role_name = nil)
|
48
|
+
# => returns all projects for a given user, optionally filtered by role_name.
|
42
49
|
```
|
43
50
|
|
44
51
|
## Requirements
|
45
52
|
|
46
53
|
* Rails >= 3.1
|
47
54
|
* ActiveRecord >= 3.1
|
48
|
-
* supports ruby 1.9
|
55
|
+
* supports ruby 1.9
|
49
56
|
|
50
57
|
## Installation
|
51
58
|
|
@@ -62,12 +69,10 @@ Add this to your Gemfile and run the +bundle+ command.
|
|
62
69
|
First, create your Role model and migration file using this generator:
|
63
70
|
|
64
71
|
```
|
65
|
-
rails g
|
72
|
+
rails g roles:role Role User
|
66
73
|
```
|
67
74
|
|
68
|
-
Role and User classes are the default.
|
69
|
-
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.
|
70
|
-
|
75
|
+
Role and User classes are the default.
|
71
76
|
|
72
77
|
### 2. Run the migration
|
73
78
|
|
@@ -99,5 +104,6 @@ end
|
|
99
104
|
## Resources
|
100
105
|
|
101
106
|
* [Rolify](https://github.com/EppO/rolify)
|
107
|
+
* [CanCan](https://github.com/ryanb/cancan)
|
102
108
|
* [Amazing tutorial](http://railsapps.github.com/tutorial-rails-bootstrap-devise-cancan.html) provided by [RailsApps](http://railsapps.github.com/)
|
103
109
|
|
data/lib/roles/railtie.rb
CHANGED
@@ -7,14 +7,6 @@ module Rolies
|
|
7
7
|
ActiveSupport.on_load(:active_record) do
|
8
8
|
ActiveRecord::Base.send :extend, Roles
|
9
9
|
end
|
10
|
-
|
11
|
-
config.before_initialize do
|
12
|
-
::Mongoid::Document.module_eval do
|
13
|
-
def self.included(base)
|
14
|
-
base.extend Roles
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end if defined?(Mongoid)
|
18
10
|
end
|
19
11
|
end
|
20
12
|
end
|
data/lib/roles/role.rb
CHANGED
@@ -63,7 +63,7 @@ module Roles
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def
|
66
|
+
def resources_with_role(resource_class, role_name = nil)
|
67
67
|
if role_name.nil?
|
68
68
|
resource_class.joins(:roles).where("roles.#{self.class.user_cname.underscore.singularize}_id = %s", self.id).where("roles.resource_type LIKE '%s'", resource_class.to_s)
|
69
69
|
else
|
data/lib/roles/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sqlite3
|