grant 2.1.0 → 3.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6a9b86c1e0b9860495eefdb5fc8596b14bb4ceca
4
+ data.tar.gz: 2645c84a2d13f358efc4d47dbc9060a5ea7ddec1
5
+ SHA512:
6
+ metadata.gz: e2fa6522ad720325ea322b58de103aa818ccfbee3375b4f241bf8d0c95237f9280ec8491e0e7870ce96189bab92be4ddb107d2780486773184239960b8c13a1a
7
+ data.tar.gz: 49a613c5752e38303ce1f08cef27092916d8c23822f0c5b040c27df7a36d73f7480287985fc4a12aceb6000829b9266f86482a3949d6c2374c731a2d2101b409
@@ -0,0 +1 @@
1
+ grant
@@ -0,0 +1 @@
1
+ ruby-2.2.3
@@ -107,4 +107,8 @@ you can include the Grant::Status module for help.
107
107
  end
108
108
  end
109
109
 
110
- Copyright (c) 2011 Near Infinity Corporation, released under the MIT license
110
+ = License
111
+
112
+ Grant is released under the MIT license.
113
+
114
+ Copyright (c) 2011 Near Infinity. http://www.nearinfinity.com
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Grant::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Jeff Kunkle", "Matt Wizeman"]
10
- s.homepage = "http://github.com/nearinfinity/grant"
10
+ s.homepage = "http://github.com/AnalyticsMediaGroup/grant"
11
11
  s.summary = "Conscious security constraints for your ActiveRecord model objects"
12
12
  s.description = "Grant is a Ruby gem and Rails plugin that forces you to make explicit security decisions about the operations performed on your ActiveRecord models."
13
13
  s.license = "MIT"
@@ -17,9 +17,8 @@ Gem::Specification.new do |s|
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
19
 
20
- s.add_dependency('activerecord', '> 3.0.0')
20
+ s.add_dependency('activerecord', '>= 4.0.0')
21
21
 
22
22
  s.add_development_dependency('rspec', '2.5.0')
23
- s.add_development_dependency('sqlite3-ruby', '1.3.3')
24
- s.add_development_dependency('activerecord', '> 3.0.0')
23
+ s.add_development_dependency('sqlite3', '1.3.9')
25
24
  end
@@ -2,11 +2,6 @@ require 'active_record'
2
2
  require 'grant/grantable'
3
3
  require 'grant/error'
4
4
 
5
- # TODO: Remove these two requires when backwards compatibility with grant 2.0.0
6
- # is no longer necessary
7
- require 'grant/integration'
8
- require 'grant/model_security'
9
-
10
5
  ActiveRecord::Base.send :include, Grant::Grantable
11
6
 
12
7
  if defined?(ActionController) and defined?(ActionController::Base)
@@ -1,20 +1,84 @@
1
1
  module Grant
2
2
  module Status
3
+ #
4
+ # Thread dependant status
5
+ #
6
+ module MonoThread
7
+ module InstanceMethods
8
+ #
9
+ # 1 status per thread
10
+ #
11
+ def is_grant_disabled
12
+ Thread.current[:grant_disabled]
13
+ end
3
14
 
15
+ def is_grant_disabled= value
16
+ Thread.current[:grant_disabled] = value
17
+ end
18
+ end
19
+
20
+ def self.included receiver
21
+ receiver.send :include, InstanceMethods
22
+ receiver.module_eval do
23
+ module_function :is_grant_disabled, :is_grant_disabled=
24
+ end
25
+ end
26
+ end
27
+
28
+ #
29
+ # Multi thread status
30
+ #
31
+ module MultiThread
32
+ module InstanceMethods
33
+ def is_grant_disabled
34
+ @@grant_disabled ||= false
35
+ end
36
+
37
+ def is_grant_disabled= value
38
+ @@grant_disabled = value
39
+ end
40
+ end
41
+
42
+ def self.included receiver
43
+ receiver.send :include, InstanceMethods
44
+ receiver.module_eval do
45
+ module_function :is_grant_disabled, :is_grant_disabled=
46
+ end
47
+ end
48
+ end
49
+
50
+ include MonoThread
51
+
52
+ #
53
+ # Change to global status (use ONLY in test env)
54
+ #
55
+ def switch_to_multithread
56
+ Grant::Status.send :include, MultiThread
57
+ end
58
+ def switch_to_monothread
59
+ Grant::Status.send :include, MonoThread
60
+ end
61
+
62
+ #
63
+ # Status
64
+ #
4
65
  def grant_disabled?
5
- Thread.current[:grant_disabled] == true
66
+ is_grant_disabled == true
6
67
  end
7
68
 
8
69
  def grant_enabled?
9
- Thread.current[:grant_disabled] == false
70
+ ! grant_disabled?
10
71
  end
11
72
 
73
+ #
74
+ # Getters/Setters
75
+ #
12
76
  def disable_grant
13
- Thread.current[:grant_disabled] = true
77
+ self.is_grant_disabled = true
14
78
  end
15
79
 
16
80
  def enable_grant
17
- Thread.current[:grant_disabled] = false
81
+ self.is_grant_disabled = false
18
82
  end
19
83
 
20
84
  def without_grant
@@ -56,6 +120,8 @@ module Grant
56
120
  result
57
121
  end
58
122
 
59
- module_function :grant_enabled?, :grant_disabled?, :disable_grant, :enable_grant, :without_grant, :with_grant, :do_as
123
+ module_function :grant_enabled?, :grant_disabled?, :disable_grant, :enable_grant,
124
+ :without_grant, :with_grant, :do_as, :switch_to_multithread,
125
+ :switch_to_monothread
60
126
  end
61
127
  end
@@ -1,3 +1,3 @@
1
1
  module Grant
2
- VERSION = "2.1.0"
2
+ VERSION = "3.0.0"
3
3
  end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+
5
+ rubies=("ruby-1.9.3" "ruby-2.0.0" "ruby-2.1.3" "ruby-2.2.3")
6
+ for i in "${rubies[@]}"
7
+ do
8
+ echo "====================================================="
9
+ echo "$i: Start Test"
10
+ echo "====================================================="
11
+ rvm $i exec bundle
12
+ rvm $i exec bundle exec rspec spec
13
+ echo "====================================================="
14
+ echo "$i: End Test"
15
+ echo "====================================================="
16
+ done
@@ -90,7 +90,7 @@ describe Grant::Grantable do
90
90
  end
91
91
 
92
92
  class SubModel < Model
93
- set_table_name 'models'
93
+ self.table_name = 'models'
94
94
  grant(:update) { true }
95
95
  grant(:destroy) { false }
96
96
  end
@@ -2,6 +2,10 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
  require 'grant/status'
3
3
 
4
4
  describe Grant::Status do
5
+ it "should be enabled by default" do
6
+ Grant::Status.grant_enabled?.should be_true
7
+ end
8
+
5
9
  it "should be enabled if set to enabled" do
6
10
  obj = Class.new do
7
11
  include Grant::Status
@@ -23,4 +27,48 @@ describe Grant::Status do
23
27
  Grant::Status.grant_enabled?.should be_false
24
28
  Grant::Status.grant_disabled?.should be_true
25
29
  end
30
+
31
+ describe "threads" do
32
+ context "when mono thread" do
33
+ before { Grant::Status.disable_grant }
34
+ after { Grant::Status.enable_grant }
35
+
36
+ it "should be disabled in current thread" do
37
+ Grant::Status.grant_enabled?.should be_false
38
+ end
39
+
40
+ it "should still be enable in another thread" do |variable|
41
+ t = Thread.new do
42
+ Grant::Status.grant_enabled?.should be_true
43
+ end
44
+ t.join
45
+ end
46
+ end
47
+
48
+ context "when multithread" do
49
+ before do
50
+ Grant::Status.switch_to_multithread
51
+ Grant::Status.disable_grant
52
+ end
53
+ after do
54
+ Grant::Status.enable_grant
55
+ Grant::Status.switch_to_monothread
56
+ end
57
+
58
+ it "should have set class variable" do
59
+ Grant::Status.class_variable_get(:@@grant_disabled).should be_true
60
+ end
61
+
62
+ it "should be disabled in current thread" do
63
+ Grant::Status.grant_enabled?.should be_false
64
+ end
65
+
66
+ it "should also be disabled in another thread" do |variable|
67
+ t = Thread.new do
68
+ Grant::Status.grant_enabled?.should be_false
69
+ end
70
+ t.join
71
+ end
72
+ end
73
+ end
26
74
  end
metadata CHANGED
@@ -1,97 +1,67 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: grant
3
- version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease:
6
- segments:
7
- - 2
8
- - 1
9
- - 0
10
- version: 2.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.0.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Jeff Kunkle
14
8
  - Matt Wizeman
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2011-07-05 00:00:00 -04:00
20
- default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
12
+ date: 2016-01-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: activerecord
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ">"
29
- - !ruby/object:Gem::Version
30
- hash: 7
31
- segments:
32
- - 3
33
- - 0
34
- - 0
35
- version: 3.0.0
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 4.0.0
36
21
  type: :runtime
37
- version_requirements: *id001
38
- - !ruby/object:Gem::Dependency
39
- name: rspec
40
22
  prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - "="
45
- - !ruby/object:Gem::Version
46
- hash: 27
47
- segments:
48
- - 2
49
- - 5
50
- - 0
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 4.0.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '='
33
+ - !ruby/object:Gem::Version
51
34
  version: 2.5.0
52
35
  type: :development
53
- version_requirements: *id002
54
- - !ruby/object:Gem::Dependency
55
- name: sqlite3-ruby
56
36
  prerelease: false
57
- requirement: &id003 !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - "="
61
- - !ruby/object:Gem::Version
62
- hash: 29
63
- segments:
64
- - 1
65
- - 3
66
- - 3
67
- version: 1.3.3
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '='
40
+ - !ruby/object:Gem::Version
41
+ version: 2.5.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: sqlite3
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '='
47
+ - !ruby/object:Gem::Version
48
+ version: 1.3.9
68
49
  type: :development
69
- version_requirements: *id003
70
- - !ruby/object:Gem::Dependency
71
- name: activerecord
72
50
  prerelease: false
73
- requirement: &id004 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">"
77
- - !ruby/object:Gem::Version
78
- hash: 7
79
- segments:
80
- - 3
81
- - 0
82
- - 0
83
- version: 3.0.0
84
- type: :development
85
- version_requirements: *id004
86
- description: Grant is a Ruby gem and Rails plugin that forces you to make explicit security decisions about the operations performed on your ActiveRecord models.
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '='
54
+ - !ruby/object:Gem::Version
55
+ version: 1.3.9
56
+ description: Grant is a Ruby gem and Rails plugin that forces you to make explicit
57
+ security decisions about the operations performed on your ActiveRecord models.
87
58
  email:
88
59
  executables: []
89
-
90
60
  extensions: []
91
-
92
61
  extra_rdoc_files: []
93
-
94
- files:
62
+ files:
63
+ - ".ruby-gemset"
64
+ - ".ruby-version"
95
65
  - CHANGELOG.md
96
66
  - LICENSE
97
67
  - README.rdoc
@@ -102,12 +72,11 @@ files:
102
72
  - lib/grant/error.rb
103
73
  - lib/grant/grantable.rb
104
74
  - lib/grant/grantor.rb
105
- - lib/grant/integration.rb
106
- - lib/grant/model_security.rb
107
75
  - lib/grant/spec_helpers.rb
108
76
  - lib/grant/status.rb
109
77
  - lib/grant/user.rb
110
78
  - lib/grant/version.rb
79
+ - run_test.sh
111
80
  - spec/config_spec.rb
112
81
  - spec/error_spec.rb
113
82
  - spec/grantable_spec.rb
@@ -117,41 +86,31 @@ files:
117
86
  - spec/support/db_setup.rb
118
87
  - spec/support/transactional_specs.rb
119
88
  - spec/user_spec.rb
120
- has_rdoc: true
121
- homepage: http://github.com/nearinfinity/grant
122
- licenses:
89
+ homepage: http://github.com/AnalyticsMediaGroup/grant
90
+ licenses:
123
91
  - MIT
92
+ metadata: {}
124
93
  post_install_message:
125
94
  rdoc_options: []
126
-
127
- require_paths:
95
+ require_paths:
128
96
  - lib
129
- required_ruby_version: !ruby/object:Gem::Requirement
130
- none: false
131
- requirements:
97
+ required_ruby_version: !ruby/object:Gem::Requirement
98
+ requirements:
132
99
  - - ">="
133
- - !ruby/object:Gem::Version
134
- hash: 3
135
- segments:
136
- - 0
137
- version: "0"
138
- required_rubygems_version: !ruby/object:Gem::Requirement
139
- none: false
140
- requirements:
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ requirements:
141
104
  - - ">="
142
- - !ruby/object:Gem::Version
143
- hash: 3
144
- segments:
145
- - 0
146
- version: "0"
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
147
107
  requirements: []
148
-
149
108
  rubyforge_project:
150
- rubygems_version: 1.4.2
109
+ rubygems_version: 2.4.5.1
151
110
  signing_key:
152
- specification_version: 3
111
+ specification_version: 4
153
112
  summary: Conscious security constraints for your ActiveRecord model objects
154
- test_files:
113
+ test_files:
155
114
  - spec/config_spec.rb
156
115
  - spec/error_spec.rb
157
116
  - spec/grantable_spec.rb
@@ -1,5 +0,0 @@
1
- # TODO: Remove this file when backwards compatibility with grant 2.0.0
2
- # is no longer necessary
3
- module Grant
4
- Integration = Grant::Status
5
- end
@@ -1,7 +0,0 @@
1
- # TODO: Remove this file when backwards compatibility with grant 2.0.0
2
- # is no longer necessary
3
- require 'grant/grantable'
4
-
5
- module Grant
6
- ModelSecurity = Grant::Grantable
7
- end