rack-auth-simples 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,8 @@
1
1
  require 'ipaddr'
2
2
  require 'ipaddr_list'
3
+
4
+ require 'digest/md5'
5
+
3
6
  module Rack
4
7
  module Auth
5
8
 
@@ -18,7 +21,8 @@ module Rack
18
21
  :return_url => '/',
19
22
  :cookie_name => '_auth_allowed',
20
23
  :fail => :forbidden,
21
- :code_param => 'code'
24
+ :code_param => 'code',
25
+ :days => 14
22
26
  }
23
27
  end
24
28
 
@@ -75,7 +79,7 @@ module Rack
75
79
  end
76
80
 
77
81
 
78
- return app.call(env) if get_cookie(env) == @opts[:secret]
82
+ return update_cookie(app.call env) if check_cookie(env)
79
83
 
80
84
 
81
85
  if @triggers.any?
@@ -113,16 +117,44 @@ module Rack
113
117
 
114
118
  private
115
119
 
116
- def get_cookie env
117
- Rack::Request.new(env).cookies[@opts[:cookie_name]]
120
+ def check_cookie env
121
+ value = Rack::Request.new(env).cookies[@opts[:cookie_name]]
122
+
123
+ if value.nil?
124
+ return false
125
+ else
126
+ time, hash = value.split('.')
127
+ expiry = time.to_i
128
+ return ( (expiry > Time.now.to_i) && (hash == cookie_hash(expiry)) )
129
+ end
130
+
131
+ end
132
+
133
+ def cookie_hash time = Time.now.to_i
134
+ ::Digest::MD5.hexdigest "#{time.to_s}---#{@opts[:secret]}"
135
+ end
136
+
137
+ def cookie
138
+ expires = (Time.now + @opts[:days] * 86400)
139
+ {
140
+ :value => "#{expires.to_i.to_s}.#{cookie_hash expires.to_i}",
141
+ :path => "/",
142
+ :expires => expires
143
+ }
118
144
  end
119
145
 
120
146
  def set_cookie url = nil
121
147
  headers = {'Location' => ( url || @opts[:return_url] ) }
122
- Rack::Utils.set_cookie_header!(headers, @opts[:cookie_name], {:value => @opts[:secret], :path => "/"})
148
+ Rack::Utils.set_cookie_header!(headers, @opts[:cookie_name], cookie)
123
149
  return [302, headers, ['']]
124
150
  end
125
151
 
152
+ def update_cookie response
153
+ status, headers, body = response
154
+ Rack::Utils.set_cookie_header!(headers, @opts[:cookie_name], cookie)
155
+ return [status, headers, body]
156
+ end
157
+
126
158
 
127
159
  end
128
160
 
@@ -1,7 +1,7 @@
1
1
  module Rack
2
2
  module Auth
3
3
  class Simples
4
- VERSION = "0.0.6"
4
+ VERSION = "0.0.7"
5
5
  end
6
6
  end
7
7
  end
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.6
4
+ version: 0.0.7
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-17 00:00:00.000000000 Z
12
+ date: 2013-01-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ipaddr_list