rails-canhaz 1.0.6 → 1.0.7

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 51e4c69f388ed0700f9c90d213a0695e821d5379
4
+ data.tar.gz: 7061227f87c107b4b1664354ae4653ef2b05de58
5
+ SHA512:
6
+ metadata.gz: 4c29cceebee70ea7eaf94af4a1ee4fb457117f41532890476b40b567e29ef7cdddaada9d4b324f1aff540532784a8b4ff8dcc0c061322ec891ad1838e74306c6
7
+ data.tar.gz: 08ebd85f17d55c26b2efa8952ab33150876f50b32875f8866e0241ecca871d000d2abef7a2348b299a660974000f135d8793aae905fd201a34233d95bde7185d
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- gem "activerecord", :require => "active_record"
4
- gem "sqlite3"
3
+ # Specify your gem's dependencies in mongoid_counter_cache.gemspec
4
+ gemspec
data/README.md CHANGED
@@ -1,3 +1,6 @@
1
+ Psst, looking for a gem that works with the beta release of Rails4 ? [Check the prerelease branch !](https://github.com/intrepidd/rails-canhaz/tree/4.0.0.beta1)
2
+
3
+ [A port of this gem working on mongoid](https://github.com/intrepidd/mongoid-canhaz) is now avaible.
1
4
  # Rails-Canhaz
2
5
 
3
6
  This gem is a simple activerecord extention that allows any application using activerecord to manage permissions based roles.
@@ -4,7 +4,7 @@ class CanHazPermission < ActiveRecord::Base
4
4
 
5
5
  attr_accessible :csubject_id, :csubject_type, :cobject_type, :cobject_id, :permission_name
6
6
 
7
- validates :cobject_id, :uniqueness => {:scope => [:permission_name, :csubject_id]}
7
+ validates :cobject_id, :uniqueness => {:scope => [:permission_name, :csubject_id, :csubject_type, :cobject_type]}
8
8
 
9
9
  # Gets the permission row between two objects
10
10
  #
@@ -63,41 +63,8 @@ class CanHazPermission < ActiveRecord::Base
63
63
  matching = results.find_all { |result| result.csubject_id == subject.id}.collect { |c| c.cobject_id }
64
64
  h[subject.id] = objects.find_all { |object| matching.include? object.id }
65
65
  end
66
- h
67
- end
68
-
69
- # Gets Permissions for a given object class, subject class, and permission name in an organized hash
70
- #
71
- # @param [Class] object The object class
72
- # @param [Class] subject The subject class
73
- # @param [String, Symbol] The name of the permission
74
- def self.objects_and_subjects_from_permission(object, subject, permission)
75
- raise CanHaz::Exceptions::NotACanHazObject unless object.include?(CanHaz::ModelExtensions::Object)
76
- raise CanHaz::Exceptions::NotACanHazSubject unless subject.include?(CanHaz::ModelExtensions::Subject)
77
-
78
- permissions = CanHazPermission.where(
79
- :csubject_type => subject.to_s,
80
- :cobject_type => object.to_s,
81
- :permission_name => permission
82
- )
83
66
 
84
- permissions = yield(permissions) if block_given?
85
-
86
- subjects = subject.find_all_by_id(permissions.collect(&:csubject_id)).inject({}) { |res, cur| res[cur.id] = cur; res} # Map by id for better access
87
- objects = object.find_all_by_id(permissions.collect(&:cobject_id)).inject({}) { |res, cur| res[cur.id] = cur; res} # Map by id for better access
88
-
89
- result = []
90
-
91
- permissions.each do |permission|
92
- found = result.find { |row| row[:subject] == subjects[permission.csubject_id]}
93
- if found
94
- found[:objects].push objects[permission.cobject_id]
95
- else
96
- result.push({:subject => subjects[permission.csubject_id], :objects => [objects[permission.cobject_id]]})
97
- end
98
- end
99
-
100
- result
67
+ h
101
68
 
102
69
  end
103
70
 
@@ -0,0 +1,3 @@
1
+ module CanHaz
2
+ VERSION = '1.0.7'
3
+ end
data/rails-canhaz.gemspec CHANGED
@@ -1,15 +1,25 @@
1
- Gem::Specification.new do |s|
2
- s.name = 'rails-canhaz'
3
- s.version = '1.0.6'
4
- s.date = '2013-02-01'
5
- s.summary = "A simple gem for managing permissions between rails models"
6
- s.description = "A simple gem for managing permissions between rails models"
7
- s.authors = ["Adrien Siami (Intrepidd)"]
8
- s.email = 'adrien@siami.fr'
9
- s.files = `git ls-files`.split("\n")
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rails-canhaz/version'
10
5
 
11
- s.homepage = 'http://github.com/Intrepidd/rails-canhaz'
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "rails-canhaz"
8
+ gem.version = CanHaz::VERSION
9
+ gem.authors = ["Intrepidd"]
10
+ gem.email = ["adrien@siami.fr"]
11
+ gem.description = 'A simple gem for managing permissions between rails models'
12
+ gem.summary = 'A simple gem for managing permissions between rails models'
13
+ gem.homepage = "http://github.com/Intrepidd/rails-canhaz"
12
14
 
13
- s.add_dependency 'activerecord', '>= 3.1.0'
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
14
19
 
20
+ gem.add_dependency 'activerecord', '>= 3.1.0'
21
+ gem.add_dependency 'rake'
22
+
23
+ gem.add_development_dependency 'rake'
24
+ gem.add_development_dependency 'sqlite3'
15
25
  end
data/test/test_canhaz.rb CHANGED
@@ -270,37 +270,5 @@ class CanHazTest < Test::Unit::TestCase
270
270
  assert_equal false, s.can?(:foo)
271
271
  end
272
272
 
273
- def test_objects_subjects_permission
274
-
275
- s1 = SubjectModel.create!
276
- s2 = SubjectModel.create!
277
- o1 = ObjectModel.create!
278
- o2 = ObjectModel.create!
279
- o3 = ObjectModel.create!
280
-
281
- s1.can!(:foo_osp, o1)
282
- s1.can!(:foo_osp, o3)
283
-
284
- s2.can!(:foo_osp, o1)
285
- s2.can!(:foo_osp, o2)
286
-
287
- res = CanHazPermission.objects_and_subjects_from_permission(ObjectModel, SubjectModel, :foo_osp)
288
-
289
- assert_equal 2, res.count
290
-
291
- subjects = Set.new(res.collect { |row| row[:subject] }) # Sets are unsorted arrays
292
-
293
- assert_equal Set.new([s1, s2]), subjects # Both arrays contain the same values, independently of the order
294
-
295
- objects = Set.new(res.find { |row| row[:subject] == s1 }[:objects])
296
-
297
- assert_equal Set.new([o1, o3]), objects
298
-
299
- objects = Set.new(res.find { |row| row[:subject] == s2 }[:objects])
300
-
301
- assert_equal Set.new([o1, o2]), objects
302
-
303
- end
304
-
305
273
  end
306
274
 
metadata CHANGED
@@ -1,39 +1,80 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-canhaz
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
5
- prerelease:
4
+ version: 1.0.7
6
5
  platform: ruby
7
6
  authors:
8
- - Adrien Siami (Intrepidd)
7
+ - Intrepidd
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-01 00:00:00.000000000 Z
11
+ date: 2013-05-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
- prerelease: false
17
15
  requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.1.0
22
- none: false
23
20
  type: :runtime
21
+ prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
23
  requirements:
26
- - - ! '>='
24
+ - - '>='
27
25
  - !ruby/object:Gem::Version
28
26
  version: 3.1.0
29
- none: false
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
30
69
  description: A simple gem for managing permissions between rails models
31
- email: adrien@siami.fr
70
+ email:
71
+ - adrien@siami.fr
32
72
  executables: []
33
73
  extensions: []
34
74
  extra_rdoc_files: []
35
75
  files:
36
76
  - .gitignore
77
+ - .travis.yml
37
78
  - Gemfile
38
79
  - README.md
39
80
  - Rakefile
@@ -46,6 +87,7 @@ files:
46
87
  - lib/rails-canhaz/extensions_object.rb
47
88
  - lib/rails-canhaz/extensions_subject.rb
48
89
  - lib/rails-canhaz/model_extensions.rb
90
+ - lib/rails-canhaz/version.rb
49
91
  - rails-canhaz.gemspec
50
92
  - test/.gitkeep
51
93
  - test/init_tests.rb
@@ -56,26 +98,33 @@ files:
56
98
  - test/test_canhaz.rb
57
99
  homepage: http://github.com/Intrepidd/rails-canhaz
58
100
  licenses: []
101
+ metadata: {}
59
102
  post_install_message:
60
103
  rdoc_options: []
61
104
  require_paths:
62
105
  - lib
63
106
  required_ruby_version: !ruby/object:Gem::Requirement
64
107
  requirements:
65
- - - ! '>='
108
+ - - '>='
66
109
  - !ruby/object:Gem::Version
67
110
  version: '0'
68
- none: false
69
111
  required_rubygems_version: !ruby/object:Gem::Requirement
70
112
  requirements:
71
- - - ! '>='
113
+ - - '>='
72
114
  - !ruby/object:Gem::Version
73
115
  version: '0'
74
- none: false
75
116
  requirements: []
76
117
  rubyforge_project:
77
- rubygems_version: 1.8.24
118
+ rubygems_version: 2.0.3
78
119
  signing_key:
79
- specification_version: 3
120
+ specification_version: 4
80
121
  summary: A simple gem for managing permissions between rails models
81
- test_files: []
122
+ test_files:
123
+ - test/.gitkeep
124
+ - test/init_tests.rb
125
+ - test/models/foo_model.rb
126
+ - test/models/object_model.rb
127
+ - test/models/subject_model.rb
128
+ - test/schema.rb
129
+ - test/test_canhaz.rb
130
+ has_rdoc: