roles_for_mongoid 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. data/.rspec +1 -0
  2. data/README.markdown +14 -109
  3. data/Rakefile +5 -1
  4. data/VERSION +1 -1
  5. data/lib/generators/mongoid/roles/roles_generator.rb +48 -25
  6. data/lib/roles_mongoid.rb +9 -0
  7. data/lib/roles_mongoid/base.rb +35 -0
  8. data/lib/roles_mongoid/namespaces.rb +12 -0
  9. data/lib/roles_mongoid/role.rb +28 -0
  10. data/lib/roles_mongoid/strategy.rb +15 -0
  11. data/lib/roles_mongoid/strategy/multi/many_roles.rb +65 -0
  12. data/lib/roles_mongoid/strategy/multi/role_strings.rb +63 -0
  13. data/lib/roles_mongoid/strategy/multi/roles_mask.rb +81 -0
  14. data/lib/roles_mongoid/strategy/single/admin_flag.rb +53 -0
  15. data/lib/roles_mongoid/strategy/single/one_role.rb +56 -0
  16. data/lib/roles_mongoid/strategy/single/role_string.rb +51 -0
  17. data/roles_for_mongoid.gemspec +43 -24
  18. data/sandbox/roles_assign.rb +54 -0
  19. data/sandbox/single_role.rb +68 -0
  20. data/spec/roles_mongoid/admin_flag_spec.rb +74 -0
  21. data/spec/roles_mongoid/many_roles_spec.rb +74 -0
  22. data/spec/roles_mongoid/one_role_spec.rb +74 -0
  23. data/spec/roles_mongoid/role_string_spec.rb +73 -0
  24. data/spec/roles_mongoid/role_strings_spec.rb +73 -0
  25. data/spec/roles_mongoid/roles_mask_spec.rb +73 -0
  26. data/spec/spec_helper.rb +17 -7
  27. metadata +94 -25
  28. data/lib/roles_for_mongoid.rb +0 -1
  29. data/lib/roles_for_mongoid/role.rb +0 -4
  30. data/lib/roles_for_mongoid/strategies/admin_flag.rb +0 -17
  31. data/lib/roles_for_mongoid/strategies/inline_role.rb +0 -6
  32. data/lib/roles_for_mongoid/strategies/inline_roles.rb +0 -13
  33. data/lib/roles_for_mongoid/strategies/role_relations.rb +0 -34
  34. data/lib/roles_for_mongoid/strategies/roles_mask.rb +0 -52
  35. data/lib/roles_for_mongoid/user.rb +0 -12
  36. data/spec/roles_for_mongoid/user_admin_field_spec.rb +0 -24
  37. data/spec/roles_for_mongoid/user_inline_role_spec.rb +0 -23
  38. data/spec/roles_for_mongoid/user_inline_roles_spec.rb +0 -27
  39. data/spec/roles_for_mongoid/user_role_relations_spec.rb +0 -37
  40. data/spec/roles_for_mongoid/user_roles_mask_spec.rb +0 -29
  41. data/spec/spec.opts +0 -1
data/spec/spec_helper.rb CHANGED
@@ -1,20 +1,30 @@
1
1
  require 'rspec'
2
2
  require 'rspec/autorun'
3
3
  require 'mongoid'
4
- require 'roles_for_mongoid'
4
+ require 'roles_mongoid'
5
5
 
6
- Mongoid.configure.master = Mongo::Connection.new.db('roles_for_mongoid')
6
+ Mongoid.configure.master = Mongo::Connection.new.db('roles_mongoid')
7
7
 
8
8
  module Database
9
- def self.teardown
10
- Mongoid.database.collections.each do |coll|
11
- coll.remove
12
- end
9
+ def self.teardown
10
+ # Mongoid.database.collections.each do |coll|
11
+ # coll.remove
12
+ # end
13
13
  end
14
14
  end
15
15
 
16
+ Mongoid.database.collections.each do |coll|
17
+ coll.remove
18
+ end
19
+
20
+
16
21
  RSpec.configure do |config|
17
-
22
+ config.mock_with :mocha
23
+ # config.before do
24
+ # Mongoid.database.collections.each do |coll|
25
+ # coll.remove
26
+ # end
27
+ # end
18
28
  end
19
29
 
20
30
 
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kristian Mandrup
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-08-02 00:00:00 +02:00
17
+ date: 2010-09-06 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -30,10 +30,72 @@ dependencies:
30
30
  - 0
31
31
  - 0
32
32
  - beta
33
- - 17
34
- version: 2.0.0.beta.17
33
+ - 19
34
+ version: 2.0.0.beta.19
35
35
  type: :development
36
36
  version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: mongoid
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ segments:
46
+ - 2
47
+ - 0
48
+ - 0
49
+ - beta
50
+ - 17
51
+ version: 2.0.0.beta.17
52
+ type: :runtime
53
+ version_requirements: *id002
54
+ - !ruby/object:Gem::Dependency
55
+ name: require_all
56
+ prerelease: false
57
+ requirement: &id003 !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ segments:
63
+ - 1
64
+ - 1
65
+ - 0
66
+ version: 1.1.0
67
+ type: :runtime
68
+ version_requirements: *id003
69
+ - !ruby/object:Gem::Dependency
70
+ name: sugar-high
71
+ prerelease: false
72
+ requirement: &id004 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ segments:
78
+ - 0
79
+ - 2
80
+ - 3
81
+ version: 0.2.3
82
+ type: :runtime
83
+ version_requirements: *id004
84
+ - !ruby/object:Gem::Dependency
85
+ name: roles_generic
86
+ prerelease: false
87
+ requirement: &id005 !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ~>
91
+ - !ruby/object:Gem::Version
92
+ segments:
93
+ - 0
94
+ - 2
95
+ - 2
96
+ version: 0.2.2
97
+ type: :runtime
98
+ version_requirements: *id005
37
99
  description: Facilitates adding Roles to your Mongoid user models
38
100
  email: kmandrup@gmail.com
39
101
  executables: []
@@ -46,27 +108,33 @@ extra_rdoc_files:
46
108
  files:
47
109
  - .document
48
110
  - .gitignore
111
+ - .rspec
49
112
  - LICENSE
50
113
  - README.markdown
51
114
  - Rakefile
52
115
  - VERSION
53
116
  - lib/generators/mongoid/roles/roles_generator.rb
54
- - lib/roles_for_mongoid.rb
55
- - lib/roles_for_mongoid/role.rb
56
- - lib/roles_for_mongoid/strategies/admin_flag.rb
57
- - lib/roles_for_mongoid/strategies/inline_role.rb
58
- - lib/roles_for_mongoid/strategies/inline_roles.rb
59
- - lib/roles_for_mongoid/strategies/role_relations.rb
60
- - lib/roles_for_mongoid/strategies/roles_mask.rb
61
- - lib/roles_for_mongoid/user.rb
117
+ - lib/roles_mongoid.rb
118
+ - lib/roles_mongoid/base.rb
119
+ - lib/roles_mongoid/namespaces.rb
120
+ - lib/roles_mongoid/role.rb
121
+ - lib/roles_mongoid/strategy.rb
122
+ - lib/roles_mongoid/strategy/multi/many_roles.rb
123
+ - lib/roles_mongoid/strategy/multi/role_strings.rb
124
+ - lib/roles_mongoid/strategy/multi/roles_mask.rb
125
+ - lib/roles_mongoid/strategy/single/admin_flag.rb
126
+ - lib/roles_mongoid/strategy/single/one_role.rb
127
+ - lib/roles_mongoid/strategy/single/role_string.rb
62
128
  - roles_for_mongoid.gemspec
129
+ - sandbox/roles_assign.rb
130
+ - sandbox/single_role.rb
63
131
  - sandbox/test.rb
64
- - spec/roles_for_mongoid/user_admin_field_spec.rb
65
- - spec/roles_for_mongoid/user_inline_role_spec.rb
66
- - spec/roles_for_mongoid/user_inline_roles_spec.rb
67
- - spec/roles_for_mongoid/user_role_relations_spec.rb
68
- - spec/roles_for_mongoid/user_roles_mask_spec.rb
69
- - spec/spec.opts
132
+ - spec/roles_mongoid/admin_flag_spec.rb
133
+ - spec/roles_mongoid/many_roles_spec.rb
134
+ - spec/roles_mongoid/one_role_spec.rb
135
+ - spec/roles_mongoid/role_string_spec.rb
136
+ - spec/roles_mongoid/role_strings_spec.rb
137
+ - spec/roles_mongoid/roles_mask_spec.rb
70
138
  - spec/spec_helper.rb
71
139
  has_rdoc: true
72
140
  homepage: http://github.com/kristianmandrup/roles_for_mm
@@ -101,9 +169,10 @@ signing_key:
101
169
  specification_version: 3
102
170
  summary: Facilitates adding Roles to your Mongoid user models
103
171
  test_files:
104
- - spec/roles_for_mongoid/user_admin_field_spec.rb
105
- - spec/roles_for_mongoid/user_inline_role_spec.rb
106
- - spec/roles_for_mongoid/user_inline_roles_spec.rb
107
- - spec/roles_for_mongoid/user_role_relations_spec.rb
108
- - spec/roles_for_mongoid/user_roles_mask_spec.rb
172
+ - spec/roles_mongoid/admin_flag_spec.rb
173
+ - spec/roles_mongoid/many_roles_spec.rb
174
+ - spec/roles_mongoid/one_role_spec.rb
175
+ - spec/roles_mongoid/role_string_spec.rb
176
+ - spec/roles_mongoid/role_strings_spec.rb
177
+ - spec/roles_mongoid/roles_mask_spec.rb
109
178
  - spec/spec_helper.rb
@@ -1 +0,0 @@
1
- require 'roles_for_mongoid/user'
@@ -1,4 +0,0 @@
1
- class Role
2
- include Mongoid::Document
3
- field :name, :type => String
4
- end
@@ -1,17 +0,0 @@
1
- module Mongoid::AdminFlag
2
- def self.included base
3
- base.extend ClassMethods
4
- base.field :admin, :type => Boolean
5
- end
6
-
7
- module ClassMethods
8
- def in_role(role_name)
9
- case role_name.downcase.to_sym
10
- when :admin
11
- where(:admin => true)
12
- else
13
- where(:admin => false)
14
- end
15
- end
16
- end
17
- end
@@ -1,6 +0,0 @@
1
- module Mongoid::InlineRole
2
- def self.included base
3
- base.field :role, :type => String
4
- base.scope :in_role, lambda { |role_name| base.where(:role => role_name) }
5
- end
6
- end
@@ -1,13 +0,0 @@
1
- module Mongoid::InlineRoles
2
- def self.included base
3
- base.extend ClassMethods
4
- base.field :roles, :type => Array
5
- base.scope :in_role, lambda { |role_name| base.where(:roles => [role_name]) }
6
- end
7
-
8
- module ClassMethods
9
- def in_roles(*roles)
10
- where(:roles.in => roles.flatten)
11
- end
12
- end
13
- end
@@ -1,34 +0,0 @@
1
- require 'roles_for_mongoid/role'
2
-
3
- module Mongoid::RoleRelations
4
- def self.included base
5
- base.extend ClassMethods
6
- base.references_many :roles, :stored_as => :array
7
- end
8
-
9
- module ClassMethods
10
- def in_role(role_name)
11
- in_roles(role_name)
12
- end
13
-
14
- # old way!
15
- # def in_roles *role_names
16
- # roles = Role.where(:name.in => role_names.flatten).to_a
17
- # arr_ids = roles.map{|role| role._id}
18
- # all.to_a.select do |user|
19
- # user.roles.to_a.any? do |role|
20
- # arr_ids.include?(role._id)
21
- # end
22
- # end
23
- # end
24
-
25
- def in_roles(*role_names)
26
- begin
27
- role_ids = Role.where(:name.in => role_names.flatten).to_a.map(&:_id)
28
- criteria.in(:role_ids => role_ids).to_a
29
- rescue
30
- return []
31
- end
32
- end
33
- end
34
- end
@@ -1,52 +0,0 @@
1
- module Mongoid
2
- module RolesMask
3
- def self.included base
4
- base.extend ClassMethods
5
- base.field :roles_mask, :type => Integer, :default => 1
6
- end
7
-
8
- module ClassMethods
9
- attr_accessor :available_roles
10
-
11
- def in_role(role)
12
- mask = calc_index(role.to_s)
13
- all.select do |user|
14
- (user.roles_mask & mask) > 0
15
- end
16
- end
17
-
18
- def in_roles(*roles)
19
- all.select do |user|
20
- roles.flatten.any? do |role|
21
- mask = calc_index(role.to_s)
22
- (user.roles_mask & mask) > 0
23
- end
24
- end
25
- end
26
-
27
- def calc_index(r)
28
- 2**available_roles.index(r)
29
- end
30
- end
31
-
32
- def available_roles
33
- self.class.available_roles
34
- end
35
-
36
- def calc_index(r)
37
- self.class.calc_index(r)
38
- end
39
-
40
- def roles=(*roles)
41
- self.roles_mask = (roles.flatten & available_roles).map { |r| calc_index(r) }.sum
42
- end
43
-
44
- def roles
45
- self.available_roles.reject { |r| ((roles_mask || 0) & self.calc_index(r)).zero? }
46
- end
47
-
48
- def role?(role)
49
- roles.include?(role.to_s)
50
- end
51
- end
52
- end
@@ -1,12 +0,0 @@
1
- require 'require_all'
2
- require 'active_support/inflector'
3
-
4
- class User
5
- include Mongoid::Document
6
-
7
- def self.role_strategy type
8
- include "Mongoid::#{type.to_s.camelize}".constantize
9
- end
10
- end
11
-
12
- require_all File.dirname(__FILE__) + '/strategies'
@@ -1,24 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- User.role_strategy :admin_flag
4
-
5
- describe "Roles for Mongoid" do
6
- after :each do
7
- Database.teardown
8
- end
9
-
10
- before :each do
11
- guest_user = User.new :name => 'Kristian', :admin => false
12
- admin_user = User.new :name => 'Admin user', :admin => true
13
- admin_user.save
14
- guest_user.save
15
- end
16
-
17
- describe "Admin flag strategy " do
18
-
19
- it "should return first user maching role" do
20
- User.in_role('guest').first.name.should == 'Kristian'
21
- User.in_role('admin').first.name.should == 'Admin user'
22
- end
23
- end
24
- end
@@ -1,23 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- User.role_strategy :inline_role
4
-
5
- describe "Roles for Mongoid" do
6
- after :each do
7
- Database.teardown
8
- end
9
-
10
- before :each do
11
- guest_user = User.new :name => 'Kristian', :role => 'guest'
12
- admin_user = User.new :name => 'Admin user', :role => 'admin'
13
- admin_user.save
14
- guest_user.save
15
- end
16
-
17
- describe "Inline role strategy" do
18
- it "should return first user maching role" do
19
- User.in_role('guest').first.name.should == 'Kristian'
20
- User.in_role('admin').first.name.should == 'Admin user'
21
- end
22
- end
23
- end
@@ -1,27 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- User.role_strategy :inline_roles
4
-
5
- describe "Roles for Mongoid" do
6
- after :each do
7
- Database.teardown
8
- end
9
-
10
- before :each do
11
- guest_user = User.new(:name => 'Kristian', :roles => ['guest']).save
12
- admin_user = User.new(:name => 'Admin user', :roles => ['admin']).save
13
- author_user = User.new(:name => 'Author', :roles => ['author']).save
14
- end
15
-
16
- describe "Inline roles strategy" do
17
-
18
- it "should return first user matching role" do
19
- User.in_role('admin').first.name.should == 'Admin user'
20
- end
21
-
22
- it "should return all users matching any of the roles" do
23
- User.in_roles(['guest', 'admin']).to_a.size.should == 2
24
- User.in_roles('guest', 'admin').to_a.size.should == 2
25
- end
26
- end
27
- end
@@ -1,37 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- User.role_strategy :role_relations
4
-
5
- describe "Roles for Mongoid" do
6
-
7
- after :each do
8
- Database.teardown
9
- end
10
-
11
- before :each do
12
- guest_user = User.create(:name => 'Kristian')
13
- admin_user = User.create(:name => 'Admin user')
14
- author_user = User.create(:name => 'Author')
15
-
16
- guest_user.roles.create(:name => 'guest')
17
- guest_user.save
18
-
19
- admin_user.roles.create(:name => 'admin')
20
- admin_user.save
21
-
22
- author_user.roles.create(:name => 'author')
23
- author_user.save
24
- end
25
-
26
- describe "Role relations strategy" do
27
- it "should return first user matching role" do
28
- User.in_role('guest').first.name.should == 'Kristian'
29
- User.in_role('admin').first.name.should == 'Admin user'
30
- end
31
-
32
- # it "should return all users matching any of the roles" do
33
- # User.in_roles(['guest', 'admin']).all.size.should == 2
34
- # User.in_roles('guest', 'admin').all.size.should == 2
35
- # end
36
- end
37
- end