rails-canhaz 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
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: