rack-private 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -28,7 +28,23 @@ And provide your own template.
28
28
  use Rack::Private :code => 'secret', :template_path => Rails.root.join("app/templates/private.html")
29
29
  ```
30
30
 
31
- ### Note on Patches/Pull Requests ###
31
+ You can specify exceptions, using strings or regular expressions
32
+
33
+ ``` ruby
34
+ use Rack::Private :code => 'secret', :except => ["public"]
35
+ ```
36
+
37
+ This will allow access to *any* URL containing 'public'. If you want more control, use a regular expression:
38
+
39
+ ``` ruby
40
+ use Rack::Private :code => 'secret', :except => [/public$/]
41
+ ```
42
+
43
+ This will only allow access to URLs that *end* in 'public'. You can use any expressions you want.
44
+
45
+
46
+ Note on Patches/Pull Requests
47
+ -----------------------------
32
48
 
33
49
  * Fork the project.
34
50
  * Make your feature addition or bug fix.
@@ -39,4 +55,4 @@ use Rack::Private :code => 'secret', :template_path => Rails.root.join("app/temp
39
55
  Author
40
56
  ------
41
57
 
42
- * {Thibaud Guillaume-Gentil}[http://github.com/thibaudgg]
58
+ * [Thibaud Guillaume-Gentil](http://github.com/thibaudgg)
data/lib/rack/private.rb CHANGED
@@ -10,7 +10,7 @@ module Rack
10
10
  request = Rack::Request.new(env)
11
11
 
12
12
  # Check code in session and return Rails call if is valid
13
- return @app.call(env) if already_auth?(request)
13
+ return @app.call(env) if (already_auth?(request) || public_page?(request))
14
14
 
15
15
  # If post method check :code_param value
16
16
  if request.post? && code_valid?(request.params["private_code"])
@@ -42,6 +42,12 @@ module Rack
42
42
  def already_auth?(request)
43
43
  code_valid?(request.session[:private_code])
44
44
  end
45
+
46
+ # Checks if the url matches one of our exception strings or regexs
47
+ def public_page?(request)
48
+ @options[:except] && @options[:except].find {|x| request.url.match(x)}
49
+ end
50
+
45
51
  end
46
52
  end
47
53
 
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class Private
3
- VERSION = "0.1.7"
3
+ VERSION = "0.1.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: rack-private
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.7
5
+ version: 0.1.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Thibaud Guillaume-Gentil
@@ -10,8 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-20 00:00:00 +02:00
14
- default_executable:
13
+ date: 2011-05-06 00:00:00 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: bundler
@@ -73,7 +72,6 @@ files:
73
72
  - lib/rack-private.rb
74
73
  - LICENSE
75
74
  - README.markdown
76
- has_rdoc: true
77
75
  homepage: http://github.com/thibaudgg/rack-private
78
76
  licenses: []
79
77
 
@@ -97,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
95
  requirements: []
98
96
 
99
97
  rubyforge_project: rack-private
100
- rubygems_version: 1.6.2
98
+ rubygems_version: 1.8.1
101
99
  signing_key:
102
100
  specification_version: 3
103
101
  summary: Protect your Rack application from anonymous.