cookieless_sessions 1.0.0 → 1.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bcbba977e6ff02b91577d6dd884eab647310f40a
4
- data.tar.gz: 38045f2f7e63afc1a5c953c4fc33a8e432802ef1
3
+ metadata.gz: 9be96a253a2a981bc0a4e8a251958f0b3a566187
4
+ data.tar.gz: fe0c0bd04483b7bef37ba52dd36a1be6bb01a5c6
5
5
  SHA512:
6
- metadata.gz: 3c14c0055fe304a5197a48d96feb8cfa8d8605bc14c977be2985e3b1d679ee3409e9180ea787599ed20f0c050ce3890e43d7ff720b7c01d832833eec2ac6d6a3
7
- data.tar.gz: 15bd37dfa92e899864ee7c28037c5cf8cf6617268f26f5344528819ec55cf5eb8dfaae7d13b1dd8756c28591cce003d0c5cdce6c22322dfc9f0c5f912b183b32
6
+ metadata.gz: 33b9090e3083f82fa21ef0917be80c3a375360a908b972d8ba0170b642721a363fc8afd53d0c1eab356104eb6a77a0907777c5097b2f6e362654ce4c62de4d9f
7
+ data.tar.gz: 649e6a656a8392a97f9822dee205c64b088f208aa6e3757663378f10066171c1c9978dc786ce9591cfce99a3786f7026e64fe6f799c406b1f615f2e668da0a38
data/.gitignore CHANGED
@@ -3,7 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
- Gemfile.lock
6
+ Gemfile*.lock
7
7
  InstalledFiles
8
8
  _yardoc
9
9
  coverage
@@ -15,11 +15,8 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
- *.bundle
19
- *.so
20
- *.o
21
- *.a
22
- mkmf.log
23
18
 
19
+ spec/dummy/db
24
20
  spec/dummy/log
25
- spec/dummy/db
21
+ .ruby-gemset
22
+ .ruby-version
data/.travis.yml CHANGED
@@ -1,6 +1,18 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - 2.1.0
6
- - 2.1.1
3
+ - '1.9.3'
4
+ - '2.0.0'
5
+ - '2.1.0'
6
+ - '2.1.1'
7
+ - ruby-head
8
+ services:
9
+ - redis-server
10
+ gemfile:
11
+ - Gemfile.rails-3.2.x
12
+ - Gemfile.rails-4.0.x
13
+ - Gemfile.rails-4.1.x
14
+ - Gemfile.rails-head
15
+ matrix:
16
+ allow_failures:
17
+ - rvm: ruby-head
18
+ - gemfile: Gemfile.rails-head
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in frikandel.gemspec
4
+ gemspec
5
+
6
+ gem 'rails', '~> 3.2.0'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in frikandel.gemspec
4
+ gemspec
5
+
6
+ gem 'rails', '~> 4.0.0'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in frikandel.gemspec
4
+ gemspec
5
+
6
+ gem 'rails', '~> 4.1.0'
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in frikandel.gemspec
4
+ gemspec
5
+
6
+ gem 'rails', 'github' => 'rails/rails'
data/README.md CHANGED
@@ -87,8 +87,17 @@ There is one security impact: If you copy & paste a URL with your Sessions-ID to
87
87
 
88
88
  Two countermeasure could be to bind sessions to the client's IP-Address and add a session lifetime. For both you can use the [frikandel](https://rubygems.org/gems/frikandel) gem. This should make it harder to steal and fix sessions.
89
89
 
90
+ ## Test
91
+
92
+ To run the test suite with different rails version by selecting the corresponding gemfile. You can use this one liners:
93
+
94
+ $ export BUNDLE_GEMFILE=Gemfile.rails-3.2.x && bundle update && bundle exec rake spec
95
+ $ export BUNDLE_GEMFILE=Gemfile.rails-4.0.x && bundle update && bundle exec rake spec
96
+ $ export BUNDLE_GEMFILE=Gemfile.rails-4.1.x && bundle update && bundle exec rake spec
97
+
90
98
  ## Changes
91
99
 
100
+ * v1.0.1 -- added Rails32DestroyableSessionPatch: sets SID in options on destroy
92
101
  * v1.0.0 -- first release with complete README; no code changes
93
102
  * v0.0.2 -- improved and more flexible version with tests
94
103
  * v0.0.1 -- initial and work-in-progress version without any tests
@@ -18,14 +18,15 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.6"
22
- spec.add_development_dependency "rake", "~> 10.3"
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec-rails", "~> 2.14"
24
24
  spec.add_development_dependency "guard-rspec", "~> 4.2"
25
25
  spec.add_development_dependency "capybara", "~> 2.2"
26
+ spec.add_development_dependency "launchy", "~> 2.4"
26
27
  spec.add_development_dependency "poltergeist", "~> 1.5"
27
28
  spec.add_development_dependency "pry", "~> 0.9"
28
- spec.add_development_dependency "rails", [">= 3.0.0", "< 5.0"]
29
+ spec.add_development_dependency "rails", [">= 3.2.0", "< 5.0"]
29
30
  spec.add_development_dependency "sqlite3", "~> 1.3"
30
31
  spec.add_development_dependency "redis-session-store", "~> 0.7"
31
32
  end
@@ -1,4 +1,5 @@
1
1
  require "cookieless_sessions/version"
2
+ require "cookieless_sessions/rails_32_patch"
2
3
 
3
4
  module CookielessSessions
4
5
  module EnabledController
@@ -0,0 +1,18 @@
1
+ module CookielessSessions
2
+ module Rails32DestroyableSessionPatch
3
+ def destroy
4
+ clear
5
+ options = @env[Rack::Session::Abstract::ENV_SESSION_OPTIONS_KEY] if @env
6
+ options ||= {}
7
+ options[:id] = @by.send(:destroy_session, @env, options[:id], options) if @by
8
+ @loaded = false
9
+ end
10
+ end
11
+
12
+
13
+ if Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR == 2
14
+ ActiveSupport.on_load(:action_controller) do
15
+ ::Rack::Session::Abstract::SessionHash.send(:include, Rails32DestroyableSessionPatch)
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module CookielessSessions
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -1,4 +1,4 @@
1
- Rails.application.configure do
1
+ Dummy::Application.configure do
2
2
  # Settings specified here will take precedence over those in config/application.rb.
3
3
 
4
4
  # In the development environment your application's code is reloaded on
@@ -1,4 +1,4 @@
1
- Rails.application.configure do
1
+ Dummy::Application.configure do
2
2
  # Settings specified here will take precedence over those in config/application.rb.
3
3
 
4
4
  # Code is not reloaded between requests.
@@ -1,4 +1,4 @@
1
- Rails.application.configure do
1
+ Dummy::Application.configure do
2
2
  # Settings specified here will take precedence over those in config/application.rb.
3
3
 
4
4
  # The test environment is used exclusively to run your application's
@@ -0,0 +1,12 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure your secret_key_base is kept private
11
+ # if you're sharing your code publicly.
12
+ Dummy::Application.config.secret_key_base = 'd5d118e8498b66b90fbce607ed69a9b8ca70689e8583c9cfd2b7996fa74ac8a39c9dac57098f39be071ed9edbefbdee0a72d4024f40aa5d4d882a6886c1cc5fa'
@@ -17,6 +17,7 @@ describe 'Cookieless', js: true do
17
17
  visit root_path # visit first time to get a valid session_id
18
18
 
19
19
  session_id = extract_session_id_from_headers(page.response_headers)
20
+ session_id.should be_present
20
21
 
21
22
  page.should have_content("'#{session_id}'")
22
23
 
@@ -29,10 +30,19 @@ describe 'Cookieless', js: true do
29
30
 
30
31
  page.should have_content("'#{session_id}'")
31
32
  end
33
+
34
+ it "returns a session_id with reset_session before" do
35
+ visit reset_root_path
36
+
37
+ session_id = extract_session_id_from_headers(page.response_headers)
38
+ session_id.should be_present
39
+
40
+ page.should have_content("'#{session_id}'")
41
+ end
32
42
  end
33
43
 
34
44
 
35
- context "with cookies cookies enabled" do
45
+ context "with cookies enabled" do
36
46
  before(:each) do
37
47
  Capybara.current_session.driver.cookies_enabled = true
38
48
  end
@@ -45,6 +55,7 @@ describe 'Cookieless', js: true do
45
55
  visit root_path # visit first time to get a valid session_id.
46
56
 
47
57
  session_id = extract_session_id_from_headers(page.response_headers)
58
+ session_id.should be_present
48
59
 
49
60
  page.should have_content("'#{session_id}'")
50
61
 
@@ -55,6 +66,7 @@ describe 'Cookieless', js: true do
55
66
  visit root_path # visit again with fresh session to get a new session_id.
56
67
 
57
68
  other_session_id = extract_session_id_from_headers(page.response_headers)
69
+ other_session_id.should be_present
58
70
 
59
71
  page.should have_content("'#{other_session_id}'")
60
72
 
@@ -1,5 +1,6 @@
1
1
  Rails.application.routes.draw do
2
2
  get "/cookieless" => "cookieless#index", as: :root
3
+ get "/cookieless/reset" => "cookieless#reset_index", as: :reset_root
3
4
  get "/cookieless/redirect" => "cookieless#redirect_to_root", as: :redirect_to_root
4
5
  end
5
6
 
@@ -16,7 +17,13 @@ class CookielessController < ApplicationController
16
17
  def index
17
18
  session[:useless] = :content
18
19
 
19
- render text: "CookielessController#Index\r\nSession-Key: '#{session_key}'\r\nSession-ID: '#{session_id}'\r\n"
20
+ render text: "CookielessController#Index\r\nSession-Key: '#{session_key}'\r\nSession-ID: '#{session_id}'\r\nRails-Version: '#{Rails.version}'\r\n"
21
+ end
22
+
23
+ def reset_index
24
+ reset_session
25
+
26
+ render text: "CookielessController#Index\r\nSession-Key: '#{session_key}'\r\nSession-ID: '#{session_id}'\r\nRails-Version: '#{Rails.version}'\r\n"
20
27
  end
21
28
 
22
29
  def redirect_to_root
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cookieless_sessions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taktsoft
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-28 00:00:00.000000000 Z
11
+ date: 2014-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '1.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.3'
33
+ version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.3'
40
+ version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec-rails
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: launchy
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.4'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.4'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: poltergeist
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -114,7 +128,7 @@ dependencies:
114
128
  requirements:
115
129
  - - ">="
116
130
  - !ruby/object:Gem::Version
117
- version: 3.0.0
131
+ version: 3.2.0
118
132
  - - "<"
119
133
  - !ruby/object:Gem::Version
120
134
  version: '5.0'
@@ -124,7 +138,7 @@ dependencies:
124
138
  requirements:
125
139
  - - ">="
126
140
  - !ruby/object:Gem::Version
127
- version: 3.0.0
141
+ version: 3.2.0
128
142
  - - "<"
129
143
  - !ruby/object:Gem::Version
130
144
  version: '5.0'
@@ -166,16 +180,19 @@ extra_rdoc_files: []
166
180
  files:
167
181
  - ".gitignore"
168
182
  - ".rspec"
169
- - ".ruby-gemset"
170
- - ".ruby-version"
171
183
  - ".travis.yml"
172
184
  - Gemfile
185
+ - Gemfile.rails-3.2.x
186
+ - Gemfile.rails-4.0.x
187
+ - Gemfile.rails-4.1.x
188
+ - Gemfile.rails-head
173
189
  - Guardfile
174
190
  - LICENSE.txt
175
191
  - README.md
176
192
  - Rakefile
177
193
  - cookieless_sessions.gemspec
178
194
  - lib/cookieless_sessions.rb
195
+ - lib/cookieless_sessions/rails_32_patch.rb
179
196
  - lib/cookieless_sessions/version.rb
180
197
  - spec/controllers/cookieless_controller_spec.rb
181
198
  - spec/controllers/sub_cookie_controller_from_cookieless_controller_spec.rb
@@ -208,11 +225,11 @@ files:
208
225
  - spec/dummy/config/initializers/filter_parameter_logging.rb
209
226
  - spec/dummy/config/initializers/inflections.rb
210
227
  - spec/dummy/config/initializers/mime_types.rb
228
+ - spec/dummy/config/initializers/secret_token.rb
211
229
  - spec/dummy/config/initializers/session_store.rb
212
230
  - spec/dummy/config/initializers/wrap_parameters.rb
213
231
  - spec/dummy/config/locales/en.yml
214
232
  - spec/dummy/config/routes.rb
215
- - spec/dummy/config/secrets.yml
216
233
  - spec/dummy/lib/assets/.keep
217
234
  - spec/dummy/log/.keep
218
235
  - spec/dummy/public/404.html
@@ -279,11 +296,11 @@ test_files:
279
296
  - spec/dummy/config/initializers/filter_parameter_logging.rb
280
297
  - spec/dummy/config/initializers/inflections.rb
281
298
  - spec/dummy/config/initializers/mime_types.rb
299
+ - spec/dummy/config/initializers/secret_token.rb
282
300
  - spec/dummy/config/initializers/session_store.rb
283
301
  - spec/dummy/config/initializers/wrap_parameters.rb
284
302
  - spec/dummy/config/locales/en.yml
285
303
  - spec/dummy/config/routes.rb
286
- - spec/dummy/config/secrets.yml
287
304
  - spec/dummy/lib/assets/.keep
288
305
  - spec/dummy/log/.keep
289
306
  - spec/dummy/public/404.html
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- cookieless_sessions
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- ruby-2.1.1
@@ -1,22 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Your secret key is used for verifying the integrity of signed cookies.
4
- # If you change this key, all old signed cookies will become invalid!
5
-
6
- # Make sure the secret is at least 30 characters and all random,
7
- # no regular words or you'll be exposed to dictionary attacks.
8
- # You can use `rake secret` to generate a secure secret key.
9
-
10
- # Make sure the secrets in this file are kept private
11
- # if you're sharing your code publicly.
12
-
13
- development:
14
- secret_key_base: bf4acc52f1b964efe6d6f9cd53b1d0f3bbf6a63d2e5a3f59177c8e8343992e680cdf67cb7593012d92794b03d5ede5a68e70c40d703e3b71410d263d40f24d6c
15
-
16
- test:
17
- secret_key_base: d5d118e8498b66b90fbce607ed69a9b8ca70689e8583c9cfd2b7996fa74ac8a39c9dac57098f39be071ed9edbefbdee0a72d4024f40aa5d4d882a6886c1cc5fa
18
-
19
- # Do not keep production secrets in the repository,
20
- # instead read values from the environment.
21
- production:
22
- secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>