zuul 0.1.0 → 0.1.1
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/README.rdoc +8 -3
- data/VERSION +1 -1
- data/lib/zuul/restrict_access.rb +33 -35
- data/spec/rails_root/db/test.sqlite3 +0 -0
- data/spec/rails_root/log/test.log +184 -0
- data/zuul.gemspec +2 -2
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -4,15 +4,17 @@ Zuul provides a simple role-based authorization framework for Rails apps.
|
|
4
4
|
|
5
5
|
==Quick Start
|
6
6
|
|
7
|
-
|
7
|
+
Zuul expects that you have a +current_user+ method available.
|
8
|
+
|
9
|
+
Add a +role+ to your +users+ table.
|
8
10
|
|
9
11
|
add_column :users, :role, :string
|
10
12
|
|
11
|
-
In your +User+ model, specify the valid roles
|
13
|
+
In your +User+ model, specify the valid roles.
|
12
14
|
|
13
15
|
valid_roles :guest, :member, :admin
|
14
16
|
|
15
|
-
In your +ApplicationController+, enable access restrictions
|
17
|
+
In your +ApplicationController+, enable access restrictions.
|
16
18
|
|
17
19
|
include Zuul::RestrictAccess
|
18
20
|
restrict_access
|
@@ -45,6 +47,9 @@ You can pass +require_user+ a list of roles and also indicate which actions to a
|
|
45
47
|
|
46
48
|
<code>require_no_user :only => :edit, :update</code>
|
47
49
|
|
50
|
+
== Credits
|
51
|
+
|
52
|
+
Thanks to {Les Hill}[http://github.com/leshill] for help testing the +ApplicationController+ mixins.
|
48
53
|
|
49
54
|
== Note on Patches/Pull Requests
|
50
55
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/lib/zuul/restrict_access.rb
CHANGED
@@ -53,54 +53,52 @@ module Zuul
|
|
53
53
|
self.access_denied_message = options[:access_denied_message] || "You must be logged in to access this page"
|
54
54
|
self.require_no_user_message = options[:require_no_user_message] || "You must be logged out to access this page"
|
55
55
|
self.unauthorized_redirect_path = options[:unauthorized_redirect_path] || :unauthorized_path
|
56
|
-
include
|
56
|
+
include InstanceMethods
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
module
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
false
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
private :require_user
|
75
|
-
|
76
|
-
def require_no_user
|
77
|
-
if current_user
|
78
|
-
store_location
|
79
|
-
flash[:notice] = self.class.require_no_user_message
|
80
|
-
redirect_to send(self.class.unauthorized_redirect_path)
|
81
|
-
return false
|
60
|
+
module InstanceMethods
|
61
|
+
def require_user(*roles)
|
62
|
+
roles.flatten!
|
63
|
+
return true if current_user && roles.empty?
|
64
|
+
deny_access unless roles.any? do |role|
|
65
|
+
method = (role.to_s + "?").to_sym
|
66
|
+
if current_user && current_user.respond_to?(method)
|
67
|
+
current_user.send(method)
|
68
|
+
else
|
69
|
+
false
|
82
70
|
end
|
83
71
|
end
|
84
|
-
|
72
|
+
end
|
73
|
+
private :require_user
|
85
74
|
|
86
|
-
|
75
|
+
def require_no_user
|
76
|
+
if current_user
|
87
77
|
store_location
|
88
|
-
flash[:notice] = self.class.
|
78
|
+
flash[:notice] = self.class.require_no_user_message
|
89
79
|
redirect_to send(self.class.unauthorized_redirect_path)
|
90
80
|
return false
|
91
81
|
end
|
92
|
-
|
82
|
+
end
|
83
|
+
private :require_no_user
|
93
84
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
85
|
+
def deny_access
|
86
|
+
store_location
|
87
|
+
flash[:notice] = self.class.access_denied_message
|
88
|
+
redirect_to send(self.class.unauthorized_redirect_path)
|
89
|
+
return false
|
90
|
+
end
|
91
|
+
private :deny_access
|
98
92
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
93
|
+
def store_location
|
94
|
+
session[:return_to] = request.request_uri
|
95
|
+
end
|
96
|
+
private :store_location
|
97
|
+
|
98
|
+
def unauthorized_path
|
99
|
+
"/"
|
103
100
|
end
|
101
|
+
private :unauthorized_path
|
104
102
|
end
|
105
103
|
end
|
106
104
|
end
|
Binary file
|
@@ -5201,4 +5201,188 @@ Processing StockController3#index (for 0.0.0.0 at 2009-11-01 06:15:03) [GET]
|
|
5201
5201
|
Redirected to http://test.host/
|
5202
5202
|
Filter chain halted as [#<Proc:0x024fc3b8@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:32>] rendered_or_redirected.
|
5203
5203
|
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock_controller3]
|
5204
|
+
WARNING: Can't mass-assign these protected attributes: role
|
5205
|
+
[4;36;1mSQL (0.7ms)[0m [0;1mselect sqlite_version(*)[0m
|
5206
|
+
[4;35;1mSQL (0.9ms)[0m [0m SELECT name
|
5207
|
+
FROM sqlite_master
|
5208
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
5209
|
+
[0m
|
5210
|
+
[4;36;1mSQL (2.2ms)[0m [0;1mDROP TABLE "users"[0m
|
5211
|
+
[4;35;1mSQL (2.4ms)[0m [0mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255), "email" varchar(255), "username" varchar(255), "role" varchar(255)) [0m
|
5212
|
+
|
5213
|
+
|
5214
|
+
Processing Stock1Controller#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5215
|
+
Redirected to http://test.host/
|
5216
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5217
|
+
Completed in 2ms (DB: 6) | 302 Found [http://test.host/stock1]
|
5218
|
+
|
5219
|
+
|
5220
|
+
Processing Stock1Controller#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5221
|
+
Completed in 14ms (View: 1, DB: 0) | 200 OK [http://test.host/stock1]
|
5222
|
+
|
5223
|
+
|
5224
|
+
Processing Stock1Controller#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5225
|
+
Redirected to http://test.host/
|
5226
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5227
|
+
Completed in 2ms (DB: 0) | 302 Found [http://test.host/stock1]
|
5228
|
+
|
5229
|
+
|
5230
|
+
Processing Stock1Controller#show (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5231
|
+
Redirected to http://test.host/
|
5232
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5233
|
+
Completed in 2ms (DB: 0) | 302 Found [http://test.host/stock1]
|
5234
|
+
|
5235
|
+
|
5236
|
+
Processing Stock2Controller#show (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5237
|
+
Redirected to http://test.host/
|
5238
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5239
|
+
Completed in 2ms (DB: 0) | 302 Found [http://test.host/stock2/show]
|
5240
|
+
|
5241
|
+
|
5242
|
+
Processing Stock2Controller#show (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5243
|
+
Completed in 15ms (View: 1, DB: 0) | 200 OK [http://test.host/stock2/show]
|
5244
|
+
|
5245
|
+
|
5246
|
+
Processing Stock2Controller#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5247
|
+
Completed in 2ms (View: 1, DB: 0) | 200 OK [http://test.host/stock2]
|
5248
|
+
|
5249
|
+
|
5250
|
+
Processing Stock3Controller#show (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5251
|
+
Redirected to http://test.host/
|
5252
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5253
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock3/show]
|
5254
|
+
|
5255
|
+
|
5256
|
+
Processing Stock3Controller#show (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5257
|
+
Completed in 13ms (View: 1, DB: 0) | 200 OK [http://test.host/stock3/show]
|
5258
|
+
|
5259
|
+
|
5260
|
+
Processing Stock3Controller#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5261
|
+
Completed in 2ms (View: 1, DB: 0) | 200 OK [http://test.host/stock3]
|
5262
|
+
|
5263
|
+
|
5264
|
+
Processing Stock4Controller#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5265
|
+
Redirected to http://test.host/
|
5266
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5267
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock4]
|
5268
|
+
|
5269
|
+
|
5270
|
+
Processing Stock4Controller#show (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5271
|
+
Completed in 13ms (View: 1, DB: 0) | 200 OK [http://test.host/stock4/show]
|
5272
|
+
|
5273
|
+
|
5274
|
+
Processing Stock5Controller#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5275
|
+
Redirected to http://test.host/
|
5276
|
+
Filter chain halted as [#<Proc:0x024fc3b8@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:32>] rendered_or_redirected.
|
5277
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock5]
|
5278
|
+
|
5279
|
+
|
5280
|
+
Processing StockController1#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5281
|
+
Redirected to http://test.host/
|
5282
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5283
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock_controller1]
|
5284
|
+
|
5285
|
+
|
5286
|
+
Processing StockController2#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5287
|
+
Redirected to http://test.host/signup
|
5288
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5289
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock_controller2]
|
5290
|
+
|
5291
|
+
|
5292
|
+
Processing StockController3#index (for 0.0.0.0 at 2009-11-04 15:47:33) [GET]
|
5293
|
+
Redirected to http://test.host/
|
5294
|
+
Filter chain halted as [#<Proc:0x024fc3b8@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:32>] rendered_or_redirected.
|
5295
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock_controller3]
|
5296
|
+
WARNING: Can't mass-assign these protected attributes: role
|
5297
|
+
[4;36;1mSQL (0.6ms)[0m [0;1mselect sqlite_version(*)[0m
|
5298
|
+
[4;35;1mSQL (0.8ms)[0m [0m SELECT name
|
5299
|
+
FROM sqlite_master
|
5300
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
5301
|
+
[0m
|
5302
|
+
[4;36;1mSQL (3.8ms)[0m [0;1mDROP TABLE "users"[0m
|
5303
|
+
[4;35;1mSQL (2.6ms)[0m [0mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar(255), "last_name" varchar(255), "email" varchar(255), "username" varchar(255), "role" varchar(255)) [0m
|
5304
|
+
|
5305
|
+
|
5306
|
+
Processing Stock1Controller#index (for 0.0.0.0 at 2009-11-04 15:51:43) [GET]
|
5307
|
+
Redirected to http://test.host/
|
5308
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5309
|
+
Completed in 2ms (DB: 8) | 302 Found [http://test.host/stock1]
|
5310
|
+
|
5311
|
+
|
5312
|
+
Processing Stock1Controller#index (for 0.0.0.0 at 2009-11-04 15:51:43) [GET]
|
5313
|
+
Completed in 14ms (View: 1, DB: 0) | 200 OK [http://test.host/stock1]
|
5314
|
+
|
5315
|
+
|
5316
|
+
Processing Stock1Controller#index (for 0.0.0.0 at 2009-11-04 15:51:43) [GET]
|
5317
|
+
Redirected to http://test.host/
|
5318
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5319
|
+
Completed in 3ms (DB: 0) | 302 Found [http://test.host/stock1]
|
5320
|
+
|
5321
|
+
|
5322
|
+
Processing Stock1Controller#show (for 0.0.0.0 at 2009-11-04 15:51:43) [GET]
|
5323
|
+
Redirected to http://test.host/
|
5324
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5325
|
+
Completed in 2ms (DB: 0) | 302 Found [http://test.host/stock1]
|
5326
|
+
|
5327
|
+
|
5328
|
+
Processing Stock2Controller#show (for 0.0.0.0 at 2009-11-04 15:51:43) [GET]
|
5329
|
+
Redirected to http://test.host/
|
5330
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5331
|
+
Completed in 2ms (DB: 0) | 302 Found [http://test.host/stock2/show]
|
5332
|
+
|
5333
|
+
|
5334
|
+
Processing Stock2Controller#show (for 0.0.0.0 at 2009-11-04 15:51:43) [GET]
|
5335
|
+
Completed in 15ms (View: 1, DB: 0) | 200 OK [http://test.host/stock2/show]
|
5336
|
+
|
5337
|
+
|
5338
|
+
Processing Stock2Controller#index (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5339
|
+
Completed in 2ms (View: 1, DB: 0) | 200 OK [http://test.host/stock2]
|
5340
|
+
|
5341
|
+
|
5342
|
+
Processing Stock3Controller#show (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5343
|
+
Redirected to http://test.host/
|
5344
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5345
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock3/show]
|
5346
|
+
|
5347
|
+
|
5348
|
+
Processing Stock3Controller#show (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5349
|
+
Completed in 14ms (View: 1, DB: 0) | 200 OK [http://test.host/stock3/show]
|
5350
|
+
|
5351
|
+
|
5352
|
+
Processing Stock3Controller#index (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5353
|
+
Completed in 2ms (View: 1, DB: 0) | 200 OK [http://test.host/stock3]
|
5354
|
+
|
5355
|
+
|
5356
|
+
Processing Stock4Controller#index (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5357
|
+
Redirected to http://test.host/
|
5358
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5359
|
+
Completed in 2ms (DB: 0) | 302 Found [http://test.host/stock4]
|
5360
|
+
|
5361
|
+
|
5362
|
+
Processing Stock4Controller#show (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5363
|
+
Completed in 13ms (View: 1, DB: 0) | 200 OK [http://test.host/stock4/show]
|
5364
|
+
|
5365
|
+
|
5366
|
+
Processing Stock5Controller#index (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5367
|
+
Redirected to http://test.host/
|
5368
|
+
Filter chain halted as [#<Proc:0x024fc3b8@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:32>] rendered_or_redirected.
|
5369
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock5]
|
5370
|
+
|
5371
|
+
|
5372
|
+
Processing StockController1#index (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5373
|
+
Redirected to http://test.host/
|
5374
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5375
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock_controller1]
|
5376
|
+
|
5377
|
+
|
5378
|
+
Processing StockController2#index (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5379
|
+
Redirected to http://test.host/signup
|
5380
|
+
Filter chain halted as [#<Proc:0x024fc69c@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:22>] rendered_or_redirected.
|
5381
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock_controller2]
|
5382
|
+
|
5383
|
+
|
5384
|
+
Processing StockController3#index (for 0.0.0.0 at 2009-11-04 15:51:44) [GET]
|
5385
|
+
Redirected to http://test.host/
|
5386
|
+
Filter chain halted as [#<Proc:0x024fc3b8@/Users/wes/Projects/zuul/lib/zuul/restrict_access.rb:32>] rendered_or_redirected.
|
5387
|
+
Completed in 1ms (DB: 0) | 302 Found [http://test.host/stock_controller3]
|
5204
5388
|
WARNING: Can't mass-assign these protected attributes: role
|
data/zuul.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{zuul}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Wes Gibbs"]
|
12
|
-
s.date = %q{2009-11-
|
12
|
+
s.date = %q{2009-11-04}
|
13
13
|
s.description = %q{A simple authorization solution for Rails apps.}
|
14
14
|
s.email = %q{wes@hashrocket.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zuul
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wes Gibbs
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-04 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|