scoped_attr_accessible 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
- coverage
1
+ coverage
2
+ pkg
data/README.md CHANGED
@@ -45,6 +45,18 @@ at all, it will allow all variables except those marked as protected.
45
45
  When declaring the scopes in the accessible / protected part, please note that they need to
46
46
  be symbol names for simplicity's sake.
47
47
 
48
+ When you want to mark an attribute as accessible / protected in all scopes, you can use the `:all` scope.
49
+ For example:
50
+
51
+ class User < ActiveRecord::Base
52
+ attr_accessible :a, :scope => :all
53
+ attr_accessible :c, :scope => :admin
54
+ attr_accessible :b, :scope => :owner
55
+ end
56
+
57
+ Will allow `:admin` to access `:a` and `:c`, but not `:b`. Along the same lines, `:owner`
58
+ can access `:a` and `:b`, but not `:c`.
59
+
48
60
  ### Setting the Scope
49
61
 
50
62
  Next, when you call methods that use mass assignment (e.g. `ActiveRecord::Base#attributes=`),
data/Rakefile CHANGED
@@ -12,7 +12,13 @@ begin
12
12
  gem.homepage = "http://github.com/thefrontiergroup/scoped_attr_accessible"
13
13
  gem.authors = ["Darcy Laycock", "Mario Visic"]
14
14
  gem.add_dependency "activemodel", "~> 3.0"
15
+ gem.add_dependency "activesupport", "~> 3.0"
15
16
  gem.add_development_dependency "rspec", "~> 2.0"
17
+ gem.add_development_dependency "rr"
18
+ gem.add_development_dependency "ruby-debug"
19
+ gem.add_development_dependency "rcov"
20
+ gem.add_development_dependency "ZenTest"
21
+
16
22
  end
17
23
  Jeweler::GemcutterTasks.new
18
24
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.2
@@ -12,4 +12,12 @@ module ScopedAttrAccessible
12
12
  end
13
13
  end
14
14
 
15
+ if defined?(Rails::Railtie)
16
+ class Railtie < Rails::Railtie
17
+ initializer "scoped_attr_accessible.setup" do
18
+ ScopedAttrAccessible.mixin!
19
+ end
20
+ end
21
+ end
22
+
15
23
  end
@@ -64,7 +64,8 @@ module ScopedAttrAccessible
64
64
  def attribute_assignable_with_scope?(attribute, scope)
65
65
  attribute = attribute.to_s.gsub(/\(.+/, '')
66
66
  scope = scope.to_sym
67
- scope_protected, scope_accessible = @protected_attributes[scope], @accessible_attributes[scope]
67
+ scope_protected = @protected_attributes[scope] + @protected_attributes[:all]
68
+ scope_accessible = @accessible_attributes[scope] + @accessible_attributes[:all]
68
69
  if scope_protected.include? attribute
69
70
  return false
70
71
  elsif scope_accessible.include?('all') || scope_accessible.include?(attribute)
@@ -0,0 +1,86 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{scoped_attr_accessible}
8
+ s.version = "0.1.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Darcy Laycock", "Mario Visic"]
12
+ s.date = %q{2010-10-13}
13
+ s.description = %q{scoped_attr_accessible is a plugin that makes it easy to scope the `attr_accessible` and `attr_protected`
14
+ methods on any library using ActiveModel's MassAssignmentSecurity module.}
15
+ s.email = %q{team+darcy+mario@thefrontiergroup.com.au}
16
+ s.extra_rdoc_files = [
17
+ "LICENSE",
18
+ "README.md"
19
+ ]
20
+ s.files = [
21
+ ".bundle/config",
22
+ ".gitignore",
23
+ ".rspec",
24
+ ".rvmrc",
25
+ "Gemfile",
26
+ "Gemfile.lock",
27
+ "LICENSE",
28
+ "README.md",
29
+ "Rakefile",
30
+ "VERSION",
31
+ "autotest/discover.rb",
32
+ "lib/scoped_attr_accessible.rb",
33
+ "lib/scoped_attr_accessible/active_model_mixin.rb",
34
+ "lib/scoped_attr_accessible/sanitizer.rb",
35
+ "scoped_attr_accessible.gemspec",
36
+ "spec/scoped_attr_accessible/active_model_mixin_spec.rb",
37
+ "spec/scoped_attr_accessible/sanitizer_spec.rb",
38
+ "spec/scoped_attr_accessible_spec.rb",
39
+ "spec/spec_helper.rb",
40
+ "spec/support/custom_matchers.rb"
41
+ ]
42
+ s.homepage = %q{http://github.com/thefrontiergroup/scoped_attr_accessible}
43
+ s.rdoc_options = ["--charset=UTF-8"]
44
+ s.require_paths = ["lib"]
45
+ s.rubygems_version = %q{1.3.7}
46
+ s.summary = %q{Scoping for attr_accessible and attr_protected on ActiveModel objects.}
47
+ s.test_files = [
48
+ "spec/scoped_attr_accessible/active_model_mixin_spec.rb",
49
+ "spec/scoped_attr_accessible/sanitizer_spec.rb",
50
+ "spec/scoped_attr_accessible_spec.rb",
51
+ "spec/spec_helper.rb",
52
+ "spec/support/custom_matchers.rb"
53
+ ]
54
+
55
+ if s.respond_to? :specification_version then
56
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
57
+ s.specification_version = 3
58
+
59
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
60
+ s.add_runtime_dependency(%q<activemodel>, ["~> 3.0"])
61
+ s.add_runtime_dependency(%q<activesupport>, ["~> 3.0"])
62
+ s.add_development_dependency(%q<rspec>, ["~> 2.0"])
63
+ s.add_development_dependency(%q<rr>, [">= 0"])
64
+ s.add_development_dependency(%q<ruby-debug>, [">= 0"])
65
+ s.add_development_dependency(%q<rcov>, [">= 0"])
66
+ s.add_development_dependency(%q<ZenTest>, [">= 0"])
67
+ else
68
+ s.add_dependency(%q<activemodel>, ["~> 3.0"])
69
+ s.add_dependency(%q<activesupport>, ["~> 3.0"])
70
+ s.add_dependency(%q<rspec>, ["~> 2.0"])
71
+ s.add_dependency(%q<rr>, [">= 0"])
72
+ s.add_dependency(%q<ruby-debug>, [">= 0"])
73
+ s.add_dependency(%q<rcov>, [">= 0"])
74
+ s.add_dependency(%q<ZenTest>, [">= 0"])
75
+ end
76
+ else
77
+ s.add_dependency(%q<activemodel>, ["~> 3.0"])
78
+ s.add_dependency(%q<activesupport>, ["~> 3.0"])
79
+ s.add_dependency(%q<rspec>, ["~> 2.0"])
80
+ s.add_dependency(%q<rr>, [">= 0"])
81
+ s.add_dependency(%q<ruby-debug>, [">= 0"])
82
+ s.add_dependency(%q<rcov>, [">= 0"])
83
+ s.add_dependency(%q<ZenTest>, [">= 0"])
84
+ end
85
+ end
86
+
@@ -102,6 +102,26 @@ describe ScopedAttrAccessible::Sanitizer do
102
102
  end
103
103
  end
104
104
 
105
+ let :sanitizer_with_fallback do
106
+ ScopedAttrAccessible::Sanitizer.new.tap do |s|
107
+ s.make_accessible :a, :all
108
+ s.make_protected :b, :all
109
+ s.make_accessible :c, :default
110
+ s.make_accessible :d, :admin
111
+ end
112
+ end
113
+
114
+ it 'should correctly handle sanitizers with fallback' do
115
+ sanitizer_with_fallback.should allow(:a, :default)
116
+ sanitizer_with_fallback.should allow(:a, :admin)
117
+ sanitizer_with_fallback.should_not allow(:b, :default)
118
+ sanitizer_with_fallback.should_not allow(:b, :admin)
119
+ sanitizer_with_fallback.should allow(:c, :default)
120
+ sanitizer_with_fallback.should_not allow(:c, :admin)
121
+ sanitizer_with_fallback.should_not allow(:d, :default)
122
+ sanitizer_with_fallback.should allow(:d, :admin)
123
+ end
124
+
105
125
  it 'should return true by default an empty list' do
106
126
  empty_sanitizer.should allow(:a)
107
127
  empty_sanitizer.should allow(:b)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scoped_attr_accessible
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Darcy Laycock
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-10-11 00:00:00 +08:00
19
+ date: 2010-10-13 00:00:00 +08:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -35,9 +35,24 @@ dependencies:
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- name: rspec
38
+ name: activesupport
39
39
  prerelease: false
40
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ hash: 7
46
+ segments:
47
+ - 3
48
+ - 0
49
+ version: "3.0"
50
+ type: :runtime
51
+ version_requirements: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ name: rspec
54
+ prerelease: false
55
+ requirement: &id003 !ruby/object:Gem::Requirement
41
56
  none: false
42
57
  requirements:
43
58
  - - ~>
@@ -48,7 +63,63 @@ dependencies:
48
63
  - 0
49
64
  version: "2.0"
50
65
  type: :development
51
- version_requirements: *id002
66
+ version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: rr
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ type: :development
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ name: ruby-debug
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 3
90
+ segments:
91
+ - 0
92
+ version: "0"
93
+ type: :development
94
+ version_requirements: *id005
95
+ - !ruby/object:Gem::Dependency
96
+ name: rcov
97
+ prerelease: false
98
+ requirement: &id006 !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ hash: 3
104
+ segments:
105
+ - 0
106
+ version: "0"
107
+ type: :development
108
+ version_requirements: *id006
109
+ - !ruby/object:Gem::Dependency
110
+ name: ZenTest
111
+ prerelease: false
112
+ requirement: &id007 !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ hash: 3
118
+ segments:
119
+ - 0
120
+ version: "0"
121
+ type: :development
122
+ version_requirements: *id007
52
123
  description: |-
53
124
  scoped_attr_accessible is a plugin that makes it easy to scope the `attr_accessible` and `attr_protected`
54
125
  methods on any library using ActiveModel's MassAssignmentSecurity module.
@@ -75,6 +146,7 @@ files:
75
146
  - lib/scoped_attr_accessible.rb
76
147
  - lib/scoped_attr_accessible/active_model_mixin.rb
77
148
  - lib/scoped_attr_accessible/sanitizer.rb
149
+ - scoped_attr_accessible.gemspec
78
150
  - spec/scoped_attr_accessible/active_model_mixin_spec.rb
79
151
  - spec/scoped_attr_accessible/sanitizer_spec.rb
80
152
  - spec/scoped_attr_accessible_spec.rb