rack-auth-simples 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rack-auth-simples/version.rb +1 -1
- data/lib/rack/auth/simples/rules.rb +43 -9
- metadata +2 -2
@@ -11,12 +11,14 @@ module Rack
|
|
11
11
|
@ips = []
|
12
12
|
@triggers = []
|
13
13
|
@exceptions = []
|
14
|
+
@codes = []
|
14
15
|
|
15
16
|
@opts = {
|
16
17
|
:secret => 'SET_VIA_CONFIG',
|
17
18
|
:return_url => '/',
|
18
19
|
:cookie_name => '_auth_allowed',
|
19
|
-
:fail => :forbidden
|
20
|
+
:fail => :forbidden,
|
21
|
+
:code_param => 'code'
|
20
22
|
}
|
21
23
|
end
|
22
24
|
|
@@ -40,6 +42,10 @@ module Rack
|
|
40
42
|
@triggers << url
|
41
43
|
end
|
42
44
|
|
45
|
+
def add_trigger_code code, url, target
|
46
|
+
@codes << {:code => code, :url => url, :target => target}
|
47
|
+
end
|
48
|
+
|
43
49
|
def parse env, app
|
44
50
|
|
45
51
|
if @opts[:fail] == :forbidden
|
@@ -56,34 +62,62 @@ module Rack
|
|
56
62
|
|
57
63
|
return app.call(env) if @exceptions.include? env['PATH_INFO']
|
58
64
|
|
65
|
+
ok = true
|
66
|
+
|
59
67
|
if @ips.any?
|
60
68
|
addrs_list = IPAddrList.new(@ips)
|
61
69
|
return fail unless addrs_list.include? ip
|
62
70
|
end
|
63
71
|
|
64
|
-
|
72
|
+
|
73
|
+
return app.call(env) if get_cookie(env) == @opts[:secret]
|
65
74
|
|
66
|
-
cookie = Rack::Request.new(env).cookies[@opts[:cookie_name]]
|
67
75
|
|
68
|
-
|
76
|
+
if @triggers.any?
|
69
77
|
|
70
78
|
if @triggers.include? env['PATH_INFO']
|
71
79
|
|
72
|
-
|
73
|
-
Rack::Utils.set_cookie_header!(headers, @opts[:cookie_name], {:value => @opts[:secret], :path => "/"})
|
74
|
-
return [302, headers, ['']]
|
80
|
+
return set_cookie
|
75
81
|
|
76
82
|
end
|
77
83
|
|
78
|
-
|
84
|
+
ok = false
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
if @codes.any?
|
89
|
+
|
90
|
+
@codes.each do |code|
|
91
|
+
|
92
|
+
if code[:url] == env['PATH_INFO'] and code[:code] == Rack::Request.new(env).params[@opts[:code_param]]
|
93
|
+
return set_cookie(code[:target])
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
ok = false
|
79
99
|
|
80
100
|
end
|
81
101
|
|
82
102
|
# default to true
|
83
|
-
return app.call env
|
103
|
+
return app.call env if ok
|
104
|
+
|
105
|
+
return fail
|
84
106
|
|
85
107
|
end
|
86
108
|
|
109
|
+
private
|
110
|
+
|
111
|
+
def get_cookie env
|
112
|
+
Rack::Request.new(env).cookies[@opts[:cookie_name]]
|
113
|
+
end
|
114
|
+
|
115
|
+
def set_cookie url = nil
|
116
|
+
headers = {'Location' => ( url || @opts[:return_url] ) }
|
117
|
+
Rack::Utils.set_cookie_header!(headers, @opts[:cookie_name], {:value => @opts[:secret], :path => "/"})
|
118
|
+
return [302, headers, ['']]
|
119
|
+
end
|
120
|
+
|
87
121
|
|
88
122
|
end
|
89
123
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-auth-simples
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ipaddr_list
|