gatekeeper-rails 0.1.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.
- data/Gemfile +3 -0
- data/Gemfile.lock +95 -0
- data/README.md +84 -0
- data/Rakefile +26 -0
- data/lib/gatekeeper.rb +59 -0
- data/lib/gatekeeper/version.rb +10 -0
- data/test/gatekeeper_test.rb +254 -0
- data/test/test_helper.rb +33 -0
- metadata +106 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
gatekeeper-rails (0.1.0)
|
5
|
+
rails (>= 2.1.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
actionmailer (3.2.3)
|
11
|
+
actionpack (= 3.2.3)
|
12
|
+
mail (~> 2.4.4)
|
13
|
+
actionpack (3.2.3)
|
14
|
+
activemodel (= 3.2.3)
|
15
|
+
activesupport (= 3.2.3)
|
16
|
+
builder (~> 3.0.0)
|
17
|
+
erubis (~> 2.7.0)
|
18
|
+
journey (~> 1.0.1)
|
19
|
+
rack (~> 1.4.0)
|
20
|
+
rack-cache (~> 1.2)
|
21
|
+
rack-test (~> 0.6.1)
|
22
|
+
sprockets (~> 2.1.2)
|
23
|
+
activemodel (3.2.3)
|
24
|
+
activesupport (= 3.2.3)
|
25
|
+
builder (~> 3.0.0)
|
26
|
+
activerecord (3.2.3)
|
27
|
+
activemodel (= 3.2.3)
|
28
|
+
activesupport (= 3.2.3)
|
29
|
+
arel (~> 3.0.2)
|
30
|
+
tzinfo (~> 0.3.29)
|
31
|
+
activeresource (3.2.3)
|
32
|
+
activemodel (= 3.2.3)
|
33
|
+
activesupport (= 3.2.3)
|
34
|
+
activesupport (3.2.3)
|
35
|
+
i18n (~> 0.6)
|
36
|
+
multi_json (~> 1.0)
|
37
|
+
arel (3.0.2)
|
38
|
+
builder (3.0.0)
|
39
|
+
erubis (2.7.0)
|
40
|
+
hike (1.2.1)
|
41
|
+
i18n (0.6.0)
|
42
|
+
journey (1.0.3)
|
43
|
+
json (1.6.6)
|
44
|
+
mail (2.4.4)
|
45
|
+
i18n (>= 0.4.0)
|
46
|
+
mime-types (~> 1.16)
|
47
|
+
treetop (~> 1.4.8)
|
48
|
+
mime-types (1.18)
|
49
|
+
multi_json (1.3.1)
|
50
|
+
polyglot (0.3.3)
|
51
|
+
rack (1.4.1)
|
52
|
+
rack-cache (1.2)
|
53
|
+
rack (>= 0.4)
|
54
|
+
rack-ssl (1.3.2)
|
55
|
+
rack
|
56
|
+
rack-test (0.6.1)
|
57
|
+
rack (>= 1.0)
|
58
|
+
rails (3.2.3)
|
59
|
+
actionmailer (= 3.2.3)
|
60
|
+
actionpack (= 3.2.3)
|
61
|
+
activerecord (= 3.2.3)
|
62
|
+
activeresource (= 3.2.3)
|
63
|
+
activesupport (= 3.2.3)
|
64
|
+
bundler (~> 1.0)
|
65
|
+
railties (= 3.2.3)
|
66
|
+
railties (3.2.3)
|
67
|
+
actionpack (= 3.2.3)
|
68
|
+
activesupport (= 3.2.3)
|
69
|
+
rack-ssl (~> 1.3.2)
|
70
|
+
rake (>= 0.8.7)
|
71
|
+
rdoc (~> 3.4)
|
72
|
+
thor (~> 0.14.6)
|
73
|
+
rake (0.9.2.2)
|
74
|
+
rdoc (3.12)
|
75
|
+
json (~> 1.4)
|
76
|
+
sprockets (2.1.2)
|
77
|
+
hike (~> 1.2)
|
78
|
+
rack (~> 1.0)
|
79
|
+
tilt (~> 1.1, != 1.3.0)
|
80
|
+
step-up (0.8.1)
|
81
|
+
thor (>= 0.14.6)
|
82
|
+
thor (0.14.6)
|
83
|
+
tilt (1.3.3)
|
84
|
+
treetop (1.4.10)
|
85
|
+
polyglot
|
86
|
+
polyglot (>= 0.3.1)
|
87
|
+
tzinfo (0.3.33)
|
88
|
+
|
89
|
+
PLATFORMS
|
90
|
+
ruby
|
91
|
+
|
92
|
+
DEPENDENCIES
|
93
|
+
gatekeeper-rails!
|
94
|
+
rails (~> 3.2.0)
|
95
|
+
step-up
|
data/README.md
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
# Gatekeeper
|
2
|
+
|
3
|
+
gatekeeper-rails provides a simple DSL to do authorization checks in rails controllers.
|
4
|
+
|
5
|
+
It's independent of any authencation/authorization lib.
|
6
|
+
Feel free within a block!
|
7
|
+
|
8
|
+
## Simple example
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
class PostsController < ApplicationController
|
12
|
+
|
13
|
+
# Gatekeeper will close the doors
|
14
|
+
# to all actions
|
15
|
+
#
|
16
|
+
include Gatekeeper
|
17
|
+
|
18
|
+
# Tell to Gatekeeper allow access
|
19
|
+
# to action index when the signed user
|
20
|
+
# is admin or guest
|
21
|
+
#
|
22
|
+
allow :index do
|
23
|
+
signed_user.is_admin? ||
|
24
|
+
signed_user.is_guest?
|
25
|
+
end
|
26
|
+
|
27
|
+
# Tell to Gatekeeper allow access
|
28
|
+
# to action new, create, update and destroy
|
29
|
+
# only when the signed user is admin!
|
30
|
+
#
|
31
|
+
allow :new, :create, :update do
|
32
|
+
signed_user.is_admin?
|
33
|
+
end
|
34
|
+
|
35
|
+
# Tell to Gatekeeper allow access
|
36
|
+
# to action destroy only when the signed user
|
37
|
+
# is admin, is older than 21 and it's before
|
38
|
+
# 10 pm :)
|
39
|
+
#
|
40
|
+
allow :destroy do
|
41
|
+
signed_user.is_admin? &&
|
42
|
+
signed_user.age >= 21 &&
|
43
|
+
Time.now.hour < 22
|
44
|
+
end
|
45
|
+
|
46
|
+
# Tell to Gatekeeper what it should do when
|
47
|
+
# the access is denied
|
48
|
+
#
|
49
|
+
when_access_denied do
|
50
|
+
render :text => "No donuts for you!!!", :status => '403'
|
51
|
+
end
|
52
|
+
|
53
|
+
# Controller actions
|
54
|
+
#
|
55
|
+
def index
|
56
|
+
render :text => 'Index post action'
|
57
|
+
end
|
58
|
+
|
59
|
+
def new
|
60
|
+
render :text => 'New post action'
|
61
|
+
end
|
62
|
+
|
63
|
+
def create
|
64
|
+
render :text => 'Create post action'
|
65
|
+
end
|
66
|
+
|
67
|
+
def update
|
68
|
+
render :text => 'Update post action'
|
69
|
+
end
|
70
|
+
|
71
|
+
def destroy
|
72
|
+
render :text => 'Destroy post action'
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
78
|
+
## Using
|
79
|
+
|
80
|
+
Add gatekeeper-rails to your Gemfile:
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
gem 'gatekeeper-rails', :require => 'gatekeeper'
|
84
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'rake/testtask'
|
2
|
+
|
3
|
+
task :default => :test
|
4
|
+
Rake::TestTask.new do |t|
|
5
|
+
t.libs << "test"
|
6
|
+
t.test_files = FileList['test/**/*_test.rb']
|
7
|
+
t.verbose = true
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Build the gem"
|
11
|
+
task :build do
|
12
|
+
opers = Dir.glob('*.gem')
|
13
|
+
opers = ["rm #{ opers.join(' ') }"] unless opers.empty?
|
14
|
+
opers << ["gem build mcp_client.gemspec"]
|
15
|
+
sh opers.join(" && ")
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Build and install the gem, removing old installation"
|
19
|
+
task :install => :build do
|
20
|
+
gem = Dir.glob('*.gem').first
|
21
|
+
if gem.nil?
|
22
|
+
puts "could not install the gem"
|
23
|
+
else
|
24
|
+
sh "gem uninstall mcp_client; gem install #{ gem }"
|
25
|
+
end
|
26
|
+
end
|
data/lib/gatekeeper.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module Gatekeeper
|
4
|
+
autoload :VERSION, 'gatekeeper/version.rb'
|
5
|
+
|
6
|
+
module ClassMethods
|
7
|
+
|
8
|
+
def allow(*actions, &block)
|
9
|
+
permission = block || :permission_not_required
|
10
|
+
|
11
|
+
actions.each do |action|
|
12
|
+
actions_access_rules[action] = permission
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def when_access_denied(&block)
|
17
|
+
self.access_denied_response = block
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.included(receiver)
|
22
|
+
receiver.extend ClassMethods
|
23
|
+
receiver.instance_eval do
|
24
|
+
before_filter :authorize
|
25
|
+
|
26
|
+
class << self
|
27
|
+
attr_accessor :actions_access_rules, :access_denied_response
|
28
|
+
end
|
29
|
+
|
30
|
+
self.actions_access_rules = {}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def authorize
|
37
|
+
actions_access_rules = self.class.actions_access_rules
|
38
|
+
|
39
|
+
permission_defined_for_action = actions_access_rules[action_name.to_sym] || actions_access_rules[:all]
|
40
|
+
if permission_defined_for_action
|
41
|
+
unless permission_defined_for_action == :permission_not_required
|
42
|
+
unless self.instance_eval &permission_defined_for_action
|
43
|
+
return access_denied
|
44
|
+
end
|
45
|
+
end
|
46
|
+
else
|
47
|
+
return access_denied
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def access_denied
|
52
|
+
if self.class.access_denied_response
|
53
|
+
self.instance_eval &self.class.access_denied_response
|
54
|
+
else
|
55
|
+
render :text => "Access not authorized.", :status => 403
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Gatekeeper
|
2
|
+
version = nil
|
3
|
+
version = $1 if ::File.expand_path('../..', __FILE__) =~ /\/gatekeeper-rails-([\w\.\-]+)/
|
4
|
+
if version.nil? && ::File.exists?(::File.expand_path('../../../.git', __FILE__))
|
5
|
+
require "step-up"
|
6
|
+
version = StepUp::Driver::Git.last_version
|
7
|
+
end
|
8
|
+
version = "0.0.0" if version.nil?
|
9
|
+
VERSION = version.gsub(/^v?([^\+]+)\+?\d*$/, '\1')
|
10
|
+
end
|
@@ -0,0 +1,254 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
|
4
|
+
|
5
|
+
module PostControllerTestHelper
|
6
|
+
def define_post_controller_with(string_block)
|
7
|
+
class_eval %{
|
8
|
+
class PostController < ApplicationController
|
9
|
+
include Gatekeeper
|
10
|
+
|
11
|
+
def index
|
12
|
+
fake_action_result('Index HTML')
|
13
|
+
end
|
14
|
+
|
15
|
+
def edit
|
16
|
+
fake_action_result('Edit HTML')
|
17
|
+
end
|
18
|
+
|
19
|
+
#{string_block}
|
20
|
+
end
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def define_post_controller
|
25
|
+
define_post_controller_with ''
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
module RequestAssertsHelper
|
30
|
+
def assert_request_successfully(body)
|
31
|
+
assert_equal body, @response.body.strip
|
32
|
+
assert_equal '200', @response.code
|
33
|
+
end
|
34
|
+
|
35
|
+
def assert_request_not_authorized(body = "Access not authorized.", status_code = '403')
|
36
|
+
assert_equal body, @response.body.strip
|
37
|
+
assert_equal status_code, @response.code
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class PostControllerWithoutDefinedRulesTest < ActionController::TestCase
|
42
|
+
extend PostControllerTestHelper
|
43
|
+
include RequestAssertsHelper
|
44
|
+
|
45
|
+
define_post_controller
|
46
|
+
tests PostController
|
47
|
+
|
48
|
+
def test_index_action_has_access_denied
|
49
|
+
get :index
|
50
|
+
assert_request_not_authorized
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
class PostControllerWithSatisfiedRuleTest < ActionController::TestCase
|
55
|
+
extend PostControllerTestHelper
|
56
|
+
include RequestAssertsHelper
|
57
|
+
|
58
|
+
define_post_controller_with %{
|
59
|
+
allow :index do
|
60
|
+
true
|
61
|
+
end
|
62
|
+
}
|
63
|
+
tests PostController
|
64
|
+
|
65
|
+
def test_index_action_has_success
|
66
|
+
get :index
|
67
|
+
assert_request_successfully("Index HTML")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class PostControllerWithInsatisfiedRuleTest < ActionController::TestCase
|
72
|
+
extend PostControllerTestHelper
|
73
|
+
include RequestAssertsHelper
|
74
|
+
|
75
|
+
define_post_controller_with %{
|
76
|
+
allow :index do
|
77
|
+
false
|
78
|
+
end
|
79
|
+
}
|
80
|
+
tests PostController
|
81
|
+
|
82
|
+
def test_index_action_has_access_denied
|
83
|
+
get :index
|
84
|
+
assert_request_not_authorized
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class PostControllerWithRuleThatAccessMethodsTest < ActionController::TestCase
|
89
|
+
extend PostControllerTestHelper
|
90
|
+
include RequestAssertsHelper
|
91
|
+
|
92
|
+
define_post_controller_with %{
|
93
|
+
allow :index do
|
94
|
+
authorized_request?
|
95
|
+
end
|
96
|
+
|
97
|
+
def authorized_request?
|
98
|
+
true
|
99
|
+
end
|
100
|
+
}
|
101
|
+
tests PostController
|
102
|
+
|
103
|
+
def test_method_was_executed_in_correct_scope
|
104
|
+
assert_nothing_raised do
|
105
|
+
get :index
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_index_action_has_success
|
110
|
+
get :index
|
111
|
+
assert_request_successfully("Index HTML")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
class PostControllerWithRuleWithouBlockTest < ActionController::TestCase
|
116
|
+
extend PostControllerTestHelper
|
117
|
+
include RequestAssertsHelper
|
118
|
+
|
119
|
+
define_post_controller_with %{
|
120
|
+
allow :index
|
121
|
+
}
|
122
|
+
tests PostController
|
123
|
+
|
124
|
+
def test_index_action_has_success
|
125
|
+
get :index
|
126
|
+
assert_request_successfully("Index HTML")
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
class PostControllerWithMultipleRulesWithouBlockTest < ActionController::TestCase
|
131
|
+
extend PostControllerTestHelper
|
132
|
+
include RequestAssertsHelper
|
133
|
+
|
134
|
+
define_post_controller_with %{
|
135
|
+
allow :index, :edit
|
136
|
+
}
|
137
|
+
tests PostController
|
138
|
+
|
139
|
+
def test_index_action_has_success
|
140
|
+
get :index
|
141
|
+
assert_request_successfully("Index HTML")
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_edit_action_has_success
|
145
|
+
get :edit
|
146
|
+
assert_request_successfully("Edit HTML")
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
class PostControllerWithInsatisfiedMultipleRulesTest < ActionController::TestCase
|
151
|
+
extend PostControllerTestHelper
|
152
|
+
include RequestAssertsHelper
|
153
|
+
|
154
|
+
define_post_controller_with %{
|
155
|
+
allow :index, :edit do
|
156
|
+
false
|
157
|
+
end
|
158
|
+
}
|
159
|
+
tests PostController
|
160
|
+
|
161
|
+
def test_index_action_has_access_denied
|
162
|
+
get :index
|
163
|
+
assert_request_not_authorized
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_edit_action_has_access_denied
|
167
|
+
get :edit
|
168
|
+
assert_request_not_authorized
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
class PostControllerWithSatisfiedRulesForAllActionsTest < ActionController::TestCase
|
173
|
+
extend PostControllerTestHelper
|
174
|
+
include RequestAssertsHelper
|
175
|
+
|
176
|
+
define_post_controller_with %{
|
177
|
+
allow :all do
|
178
|
+
true
|
179
|
+
end
|
180
|
+
}
|
181
|
+
tests PostController
|
182
|
+
|
183
|
+
def test_index_action_has_success
|
184
|
+
get :index
|
185
|
+
assert_request_successfully("Index HTML")
|
186
|
+
end
|
187
|
+
|
188
|
+
def test_edit_action_has_success
|
189
|
+
get :edit
|
190
|
+
assert_request_successfully("Edit HTML")
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
class PostControllerWithRulesForAllActionsWithoutBlockTest < ActionController::TestCase
|
195
|
+
extend PostControllerTestHelper
|
196
|
+
include RequestAssertsHelper
|
197
|
+
|
198
|
+
define_post_controller_with %{
|
199
|
+
allow :all
|
200
|
+
}
|
201
|
+
tests PostController
|
202
|
+
|
203
|
+
def test_index_action_has_success
|
204
|
+
get :index
|
205
|
+
assert_request_successfully("Index HTML")
|
206
|
+
end
|
207
|
+
|
208
|
+
def test_edit_action_has_success
|
209
|
+
get :edit
|
210
|
+
assert_request_successfully("Edit HTML")
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
class PostControllerWithRulesForAllActionsAndOneActionTest < ActionController::TestCase
|
215
|
+
extend PostControllerTestHelper
|
216
|
+
include RequestAssertsHelper
|
217
|
+
|
218
|
+
define_post_controller_with %{
|
219
|
+
allow :all
|
220
|
+
|
221
|
+
allow :edit do
|
222
|
+
false
|
223
|
+
end
|
224
|
+
}
|
225
|
+
tests PostController
|
226
|
+
|
227
|
+
def test_index_action_has_success
|
228
|
+
get :index
|
229
|
+
assert_request_successfully("Index HTML")
|
230
|
+
end
|
231
|
+
|
232
|
+
def test_edit_action_has_access_denied
|
233
|
+
get :edit
|
234
|
+
assert_request_not_authorized
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
class PostControllerWithRuleForAccessDeniedResponse < ActionController::TestCase
|
239
|
+
extend PostControllerTestHelper
|
240
|
+
include RequestAssertsHelper
|
241
|
+
|
242
|
+
define_post_controller_with %{
|
243
|
+
when_access_denied do
|
244
|
+
fake_action_result("No donuts for you!!!", 401)
|
245
|
+
end
|
246
|
+
}
|
247
|
+
tests PostController
|
248
|
+
|
249
|
+
def test_index_action_has_access_denied
|
250
|
+
get :index
|
251
|
+
assert_request_not_authorized("No donuts for you!!!", '401')
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
|
4
|
+
LIB_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift(LIB_PATH)
|
7
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
8
|
+
require 'gatekeeper'
|
9
|
+
|
10
|
+
# Simulating a rails app for tests
|
11
|
+
#
|
12
|
+
require 'action_controller'
|
13
|
+
require 'rails'
|
14
|
+
require 'rails/test_help'
|
15
|
+
|
16
|
+
module MyTestApplication
|
17
|
+
class Application < Rails::Application
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
Rails.application.routes.draw do
|
22
|
+
match '/:controller(/:action(/:id))'
|
23
|
+
end
|
24
|
+
|
25
|
+
class ApplicationController < ActionController::Base
|
26
|
+
include Rails.application.routes.url_helpers
|
27
|
+
|
28
|
+
protected
|
29
|
+
def fake_action_result(view_content = nil, status = 200)
|
30
|
+
view_content ||= "any view content"
|
31
|
+
render :text => view_content, :status => status
|
32
|
+
end
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gatekeeper-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Eric Fer
|
9
|
+
- Lucas Fais
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-05-04 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rails
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.1.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 2.1.0
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: step-up
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :development
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rails
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.2.0
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 3.2.0
|
63
|
+
description: ! "gatekeeper-rails provides a simple and \n beaultiful DSL to do
|
64
|
+
authorization checks in rails controllers"
|
65
|
+
email:
|
66
|
+
- eric.fer@gmail.com
|
67
|
+
- lucasfais@gmail.com
|
68
|
+
executables: []
|
69
|
+
extensions: []
|
70
|
+
extra_rdoc_files: []
|
71
|
+
files:
|
72
|
+
- Gemfile
|
73
|
+
- Gemfile.lock
|
74
|
+
- README.md
|
75
|
+
- Rakefile
|
76
|
+
- lib/gatekeeper.rb
|
77
|
+
- lib/gatekeeper/version.rb
|
78
|
+
- test/gatekeeper_test.rb
|
79
|
+
- test/test_helper.rb
|
80
|
+
homepage: https://github.com/abril/gatekeeper-rails
|
81
|
+
licenses: []
|
82
|
+
post_install_message:
|
83
|
+
rdoc_options: []
|
84
|
+
require_paths:
|
85
|
+
- lib
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
88
|
+
requirements:
|
89
|
+
- - ! '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
94
|
+
requirements:
|
95
|
+
- - ! '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 1.3.6
|
98
|
+
requirements: []
|
99
|
+
rubyforge_project:
|
100
|
+
rubygems_version: 1.8.23
|
101
|
+
signing_key:
|
102
|
+
specification_version: 3
|
103
|
+
summary: Simple DSL for authorization with Rails
|
104
|
+
test_files:
|
105
|
+
- test/gatekeeper_test.rb
|
106
|
+
- test/test_helper.rb
|