ssl_routes 0.1.4 → 0.1.5
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/lib/ssl_routes/rails3.rb +32 -42
- data/lib/ssl_routes/version.rb +1 -1
- metadata +4 -4
data/lib/ssl_routes/rails3.rb
CHANGED
@@ -4,7 +4,6 @@ module SslRoutes
|
|
4
4
|
|
5
5
|
def self.included(base)
|
6
6
|
base.extend ClassMethods
|
7
|
-
base.send :include, InstanceMethods
|
8
7
|
end
|
9
8
|
|
10
9
|
module ClassMethods
|
@@ -20,63 +19,54 @@ module SslRoutes
|
|
20
19
|
|
21
20
|
end
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
when TrueClass then 'https'
|
30
|
-
else 'http'
|
31
|
-
end
|
32
|
-
target = current if [:all, :both].include? options[self.parameter]
|
33
|
-
target = 'https' if self.secure_session && current_user
|
34
|
-
target = options[:protocol] if options[:protocol]
|
35
|
-
[ current, target.split(':').first ]
|
22
|
+
def determine_protocols(options)
|
23
|
+
current = self.request.ssl? ? 'https' : 'http'
|
24
|
+
target = case options[self.parameter]
|
25
|
+
when String then options[self.parameter]
|
26
|
+
when TrueClass then 'https'
|
27
|
+
else 'http'
|
36
28
|
end
|
29
|
+
target = current if [:all, :both].include? options[self.parameter]
|
30
|
+
target = 'https' if self.secure_session && current_user
|
31
|
+
target = options[:protocol] if options[:protocol]
|
32
|
+
[ current, target.split(':').first ]
|
33
|
+
end
|
37
34
|
|
38
|
-
|
35
|
+
private
|
39
36
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
37
|
+
def ensure_protocol
|
38
|
+
routes = Rails.application.routes
|
39
|
+
options = routes.recognize_path request.path, {:method => request.env['REQUEST_METHOD']}
|
40
|
+
current, target = determine_protocols(options)
|
41
|
+
if current != target && !request.xhr? && request.get?
|
42
|
+
flash.keep
|
43
|
+
redirect_to URI.join("#{target}://#{request.host_with_port}", request.fullpath).to_s
|
44
|
+
return false
|
49
45
|
end
|
50
|
-
|
51
|
-
end
|
46
|
+
end
|
52
47
|
|
53
48
|
end
|
54
49
|
|
55
50
|
module ActionDispatch
|
56
51
|
|
57
52
|
def self.included(base)
|
58
|
-
base.send :include, InstanceMethods
|
59
53
|
base.send :alias_method_chain, :url_for, :ssl_support
|
60
54
|
end
|
61
55
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
if
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
options.merge!({ :protocol => target, :only_path => false })
|
73
|
-
end
|
74
|
-
end
|
56
|
+
def url_for_with_ssl_support(options)
|
57
|
+
if options.is_a?(Hash) && options[:only_path] == true
|
58
|
+
ac = self.respond_to?(:controller) ? self.controller : self
|
59
|
+
if ac.respond_to?(:enable_ssl) && ac.enable_ssl
|
60
|
+
case options
|
61
|
+
when Hash
|
62
|
+
current, target = ac.determine_protocols(options)
|
63
|
+
if current != target
|
64
|
+
options.merge!({ :protocol => target, :only_path => false })
|
65
|
+
end
|
75
66
|
end
|
76
67
|
end
|
77
|
-
url_for_without_ssl_support(options)
|
78
68
|
end
|
79
|
-
|
69
|
+
url_for_without_ssl_support(options)
|
80
70
|
end
|
81
71
|
|
82
72
|
end
|
data/lib/ssl_routes/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ssl_routes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Cedric Howe
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-07-12 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rails
|