rack-private 0.1.7 → 0.1.8

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.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.