quo_vadis 1.0.5 → 1.0.6

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/.gitignore CHANGED
@@ -1,6 +1,8 @@
1
1
  pkg/*
2
2
  *.gem
3
+ Gemfile.lock
3
4
  .bundle
4
5
  test/dummy/log/*
5
6
  test/dummy/tmp/*
6
7
  rdoc/*
8
+ NOTES
data/CHANGELOG.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## 1.0.5 (23 February 2011)
5
+
6
+ * Support blocking of sign-in process.
7
+
4
8
  ## 1.0.4 (22 February 2011)
5
9
 
6
10
  * Work with Rails' improved CSRF protection.
@@ -3,6 +3,8 @@ module ControllerMixin
3
3
  base.helper_method :current_user
4
4
  end
5
5
 
6
+ protected
7
+
6
8
  def handle_unverified_request
7
9
  super
8
10
  cookies.delete :remember_me
@@ -10,14 +12,9 @@ module ControllerMixin
10
12
 
11
13
  private
12
14
 
13
- # Returns true if the sign-in process is blocked to the user, false otherwise.
14
- def blocked?
15
- QuoVadis.blocked?(self)
16
- end
17
-
18
15
  # Remembers the authenticated <tt>user</tt> (in this session and future sessions).
19
16
  #
20
- # If you want to sign in a <tt>user</tt>, call <tt>QuoVadis::SessionsController#sign_in</tt>
17
+ # If you want to sign in a <tt>user</tt> you have just created, call <tt>sign_in</tt>
21
18
  # instead.
22
19
  def current_user=(user)
23
20
  remember_user_in_session user
@@ -39,6 +36,24 @@ module ControllerMixin
39
36
  end
40
37
  end
41
38
 
39
+ # Signs in a user, i.e. remembers them in the session, runs the sign-in hook,
40
+ # and redirects appropriately.
41
+ #
42
+ # This method should be called when you have just authenticated a <tt>user</tt>
43
+ # and you need to sign them in. For example, if a new user has just signed up,
44
+ # you should call this method to sign them in.
45
+ def sign_in(user)
46
+ prevent_session_fixation
47
+ self.current_user = user
48
+ QuoVadis.signed_in_hook user, self
49
+ redirect_to QuoVadis.signed_in_url(user, original_url)
50
+ end
51
+
52
+ # Returns true if the sign-in process is blocked to the user, false otherwise.
53
+ def blocked?
54
+ QuoVadis.blocked?(self)
55
+ end
56
+
42
57
  def remember_user_in_session(user) # :nodoc:
43
58
  session[:current_user_id] = user ? user.id : nil
44
59
  end
@@ -66,4 +81,21 @@ module ControllerMixin
66
81
  def find_user_by_session # :nodoc:
67
82
  User.find(session[:current_user_id]) if session[:current_user_id]
68
83
  end
84
+
85
+ # Returns the URL if any which the user tried to visit before being forced to authenticate.
86
+ def original_url
87
+ url = session[:quo_vadis_original_url]
88
+ session[:quo_vadis_original_url] = nil
89
+ url
90
+ end
91
+
92
+ def prevent_session_fixation # :nodoc:
93
+ original_flash = flash.inject({}) { |hsh, (k,v)| hsh[k] = v; hsh }
94
+ original_url = session[:quo_vadis_original_url]
95
+
96
+ reset_session
97
+
98
+ original_flash.each { |k,v| flash[k] = v }
99
+ session[:quo_vadis_original_url] = original_url
100
+ end
69
101
  end
@@ -77,30 +77,8 @@ class QuoVadis::SessionsController < ApplicationController
77
77
  end
78
78
  end
79
79
 
80
- protected
81
-
82
- # Signs in a user, i.e. remembers them in the session, runs the sign-in hook,
83
- # and redirects appropriately.
84
- #
85
- # This method should be called when you have just authenticated <tt>user</tt>
86
- # and you need to sign them in. For example, if a new user has just signed up,
87
- # you should call this method to sign them in.
88
- def sign_in(user)
89
- prevent_session_fixation
90
- self.current_user = user
91
- QuoVadis.signed_in_hook user, self
92
- redirect_to QuoVadis.signed_in_url(user, original_url)
93
- end
94
-
95
80
  private
96
81
 
97
- # Returns the URL if any which the user tried to visit before being forced to authenticate.
98
- def original_url
99
- url = session[:quo_vadis_original_url]
100
- session[:quo_vadis_original_url] = nil
101
- url
102
- end
103
-
104
82
  def invalid_token # :nodoc:
105
83
  flash[:alert] = t('quo_vadis.flash.forgotten.invalid_token') unless t('quo_vadis.flash.forgotten.invalid_token').blank?
106
84
  redirect_to forgotten_sign_in_url
@@ -110,14 +88,4 @@ class QuoVadis::SessionsController < ApplicationController
110
88
  QuoVadis.layout
111
89
  end
112
90
 
113
- def prevent_session_fixation # :nodoc:
114
- original_flash = flash.inject({}) { |hsh, (k,v)| hsh[k] = v; hsh }
115
- original_url = session[:quo_vadis_original_url]
116
-
117
- reset_session
118
-
119
- original_flash.each { |k,v| flash[k] = v }
120
- session[:quo_vadis_original_url] = original_url
121
- end
122
-
123
91
  end
@@ -1,3 +1,3 @@
1
1
  module QuoVadis
2
- VERSION = '1.0.5'
2
+ VERSION = '1.0.6'
3
3
  end
@@ -0,0 +1,17 @@
1
+ class UsersController < ActionController::Base
2
+
3
+ def new
4
+ @user = User.new
5
+ end
6
+
7
+ def create
8
+ @user = User.new params[:user]
9
+ if @user.save
10
+ flash[:notice] = 'You have signed up!'
11
+ sign_in @user # <-- Quo Vadis sign-in hook
12
+ else
13
+ render 'new'
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,14 @@
1
+ <h1>Sign up</h1>
2
+
3
+ <%= form_for @user do |f| %>
4
+ <%= f.label :name %>
5
+ <%= f.text_field :name %>
6
+
7
+ <%= f.label :username %>
8
+ <%= f.text_field :username %>
9
+
10
+ <%= f.label :password %>
11
+ <%= f.password_field :password %>
12
+
13
+ <%= f.submit 'Sign up' %>
14
+ <% end %>
@@ -1,4 +1,5 @@
1
1
  Dummy::Application.routes.draw do
2
2
  resources :articles
3
+ resources :users
3
4
  root :to => 'articles#index'
4
5
  end
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+
3
+ class SignUpTest < ActiveSupport::IntegrationCase
4
+
5
+ test 'sign in of a just-signed-up user' do
6
+ visit new_user_path
7
+ fill_in 'user_name', :with => 'Robert'
8
+ fill_in 'user_username', :with => 'bob'
9
+ fill_in 'user_password', :with => 'secret'
10
+ click_button 'Sign up'
11
+
12
+ assert_equal root_path, current_path
13
+
14
+ within '.flash.notice' do
15
+ assert page.has_content?('You have signed up!')
16
+ end
17
+
18
+ assert page.has_content?('You are signed in as Robert')
19
+ end
20
+
21
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quo_vadis
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
4
+ hash: 27
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 5
10
- version: 1.0.5
9
+ - 6
10
+ version: 1.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andy Stewart
@@ -15,10 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-23 00:00:00 +00:00
18
+ date: 2011-10-03 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
+ name: rails
22
23
  prerelease: false
23
24
  version_requirements: &id001 !ruby/object:Gem::Requirement
24
25
  none: false
@@ -30,10 +31,10 @@ dependencies:
30
31
  - 3
31
32
  - 0
32
33
  version: "3.0"
33
- requirement: *id001
34
- name: rails
35
34
  type: :runtime
35
+ requirement: *id001
36
36
  - !ruby/object:Gem::Dependency
37
+ name: bcrypt-ruby
37
38
  prerelease: false
38
39
  version_requirements: &id002 !ruby/object:Gem::Requirement
39
40
  none: false
@@ -46,10 +47,10 @@ dependencies:
46
47
  - 1
47
48
  - 4
48
49
  version: 2.1.4
49
- requirement: *id002
50
- name: bcrypt-ruby
51
50
  type: :runtime
51
+ requirement: *id002
52
52
  - !ruby/object:Gem::Dependency
53
+ name: rails
53
54
  prerelease: false
54
55
  version_requirements: &id003 !ruby/object:Gem::Requirement
55
56
  none: false
@@ -62,10 +63,10 @@ dependencies:
62
63
  - 0
63
64
  - 4
64
65
  version: 3.0.4
65
- requirement: *id003
66
- name: rails
67
66
  type: :development
67
+ requirement: *id003
68
68
  - !ruby/object:Gem::Dependency
69
+ name: sqlite3-ruby
69
70
  prerelease: false
70
71
  version_requirements: &id004 !ruby/object:Gem::Requirement
71
72
  none: false
@@ -76,10 +77,10 @@ dependencies:
76
77
  segments:
77
78
  - 0
78
79
  version: "0"
79
- requirement: *id004
80
- name: sqlite3-ruby
81
80
  type: :development
81
+ requirement: *id004
82
82
  - !ruby/object:Gem::Dependency
83
+ name: capybara
83
84
  prerelease: false
84
85
  version_requirements: &id005 !ruby/object:Gem::Requirement
85
86
  none: false
@@ -92,10 +93,10 @@ dependencies:
92
93
  - 4
93
94
  - 0
94
95
  version: 0.4.0
95
- requirement: *id005
96
- name: capybara
97
96
  type: :development
97
+ requirement: *id005
98
98
  - !ruby/object:Gem::Dependency
99
+ name: launchy
99
100
  prerelease: false
100
101
  version_requirements: &id006 !ruby/object:Gem::Requirement
101
102
  none: false
@@ -106,9 +107,8 @@ dependencies:
106
107
  segments:
107
108
  - 0
108
109
  version: "0"
109
- requirement: *id006
110
- name: launchy
111
110
  type: :development
111
+ requirement: *id006
112
112
  description: Simple username/password authentication for Rails 3.
113
113
  email:
114
114
  - boss@airbladesoftware.com
@@ -122,7 +122,6 @@ files:
122
122
  - .gitignore
123
123
  - CHANGELOG.md
124
124
  - Gemfile
125
- - Gemfile.lock
126
125
  - README.md
127
126
  - Rakefile
128
127
  - app/controllers/controller_mixin.rb
@@ -142,6 +141,7 @@ files:
142
141
  - test/dummy/Rakefile
143
142
  - test/dummy/app/controllers/application_controller.rb
144
143
  - test/dummy/app/controllers/articles_controller.rb
144
+ - test/dummy/app/controllers/users_controller.rb
145
145
  - test/dummy/app/helpers/application_helper.rb
146
146
  - test/dummy/app/helpers/articles_helper.rb
147
147
  - test/dummy/app/models/article.rb
@@ -154,6 +154,7 @@ files:
154
154
  - test/dummy/app/views/sessions/edit.html.erb
155
155
  - test/dummy/app/views/sessions/forgotten.html.erb
156
156
  - test/dummy/app/views/sessions/new.html.erb
157
+ - test/dummy/app/views/users/new.html.erb
157
158
  - test/dummy/config.ru
158
159
  - test/dummy/config/application.rb
159
160
  - test/dummy/config/boot.rb
@@ -203,6 +204,7 @@ files:
203
204
  - test/integration/navigation_test.rb
204
205
  - test/integration/sign_in_test.rb
205
206
  - test/integration/sign_out_test.rb
207
+ - test/integration/sign_up_test.rb
206
208
  - test/quo_vadis_test.rb
207
209
  - test/support/integration_case.rb
208
210
  - test/test_helper.rb
@@ -237,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
239
  requirements: []
238
240
 
239
241
  rubyforge_project: quo_vadis
240
- rubygems_version: 1.3.7
242
+ rubygems_version: 1.6.2
241
243
  signing_key:
242
244
  specification_version: 3
243
245
  summary: Simple username/password authentication for Rails 3.
@@ -246,6 +248,7 @@ test_files:
246
248
  - test/dummy/Rakefile
247
249
  - test/dummy/app/controllers/application_controller.rb
248
250
  - test/dummy/app/controllers/articles_controller.rb
251
+ - test/dummy/app/controllers/users_controller.rb
249
252
  - test/dummy/app/helpers/application_helper.rb
250
253
  - test/dummy/app/helpers/articles_helper.rb
251
254
  - test/dummy/app/models/article.rb
@@ -258,6 +261,7 @@ test_files:
258
261
  - test/dummy/app/views/sessions/edit.html.erb
259
262
  - test/dummy/app/views/sessions/forgotten.html.erb
260
263
  - test/dummy/app/views/sessions/new.html.erb
264
+ - test/dummy/app/views/users/new.html.erb
261
265
  - test/dummy/config.ru
262
266
  - test/dummy/config/application.rb
263
267
  - test/dummy/config/boot.rb
@@ -307,6 +311,7 @@ test_files:
307
311
  - test/integration/navigation_test.rb
308
312
  - test/integration/sign_in_test.rb
309
313
  - test/integration/sign_out_test.rb
314
+ - test/integration/sign_up_test.rb
310
315
  - test/quo_vadis_test.rb
311
316
  - test/support/integration_case.rb
312
317
  - test/test_helper.rb
data/Gemfile.lock DELETED
@@ -1,113 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- quo_vadis (1.0.5)
5
- bcrypt-ruby (~> 2.1.4)
6
- rails (~> 3.0)
7
-
8
- GEM
9
- remote: http://rubygems.org/
10
- specs:
11
- abstract (1.0.0)
12
- actionmailer (3.0.4)
13
- actionpack (= 3.0.4)
14
- mail (~> 2.2.15)
15
- actionpack (3.0.4)
16
- activemodel (= 3.0.4)
17
- activesupport (= 3.0.4)
18
- builder (~> 2.1.2)
19
- erubis (~> 2.6.6)
20
- i18n (~> 0.4)
21
- rack (~> 1.2.1)
22
- rack-mount (~> 0.6.13)
23
- rack-test (~> 0.5.7)
24
- tzinfo (~> 0.3.23)
25
- activemodel (3.0.4)
26
- activesupport (= 3.0.4)
27
- builder (~> 2.1.2)
28
- i18n (~> 0.4)
29
- activerecord (3.0.4)
30
- activemodel (= 3.0.4)
31
- activesupport (= 3.0.4)
32
- arel (~> 2.0.2)
33
- tzinfo (~> 0.3.23)
34
- activeresource (3.0.4)
35
- activemodel (= 3.0.4)
36
- activesupport (= 3.0.4)
37
- activesupport (3.0.4)
38
- arel (2.0.8)
39
- bcrypt-ruby (2.1.4)
40
- builder (2.1.2)
41
- capybara (0.4.1.2)
42
- celerity (>= 0.7.9)
43
- culerity (>= 0.2.4)
44
- mime-types (>= 1.16)
45
- nokogiri (>= 1.3.3)
46
- rack (>= 1.0.0)
47
- rack-test (>= 0.5.4)
48
- selenium-webdriver (>= 0.0.27)
49
- xpath (~> 0.1.3)
50
- celerity (0.8.8)
51
- childprocess (0.1.7)
52
- ffi (~> 0.6.3)
53
- configuration (1.2.0)
54
- culerity (0.2.15)
55
- erubis (2.6.6)
56
- abstract (>= 1.0.0)
57
- ffi (0.6.3)
58
- rake (>= 0.8.7)
59
- i18n (0.5.0)
60
- json_pure (1.5.1)
61
- launchy (0.3.7)
62
- configuration (>= 0.0.5)
63
- rake (>= 0.8.1)
64
- mail (2.2.15)
65
- activesupport (>= 2.3.6)
66
- i18n (>= 0.4.0)
67
- mime-types (~> 1.16)
68
- treetop (~> 1.4.8)
69
- mime-types (1.16)
70
- nokogiri (1.4.4)
71
- polyglot (0.3.1)
72
- rack (1.2.1)
73
- rack-mount (0.6.13)
74
- rack (>= 1.0.0)
75
- rack-test (0.5.7)
76
- rack (>= 1.0)
77
- rails (3.0.4)
78
- actionmailer (= 3.0.4)
79
- actionpack (= 3.0.4)
80
- activerecord (= 3.0.4)
81
- activeresource (= 3.0.4)
82
- activesupport (= 3.0.4)
83
- bundler (~> 1.0)
84
- railties (= 3.0.4)
85
- railties (3.0.4)
86
- actionpack (= 3.0.4)
87
- activesupport (= 3.0.4)
88
- rake (>= 0.8.7)
89
- thor (~> 0.14.4)
90
- rake (0.8.7)
91
- rubyzip (0.9.4)
92
- selenium-webdriver (0.1.3)
93
- childprocess (~> 0.1.5)
94
- ffi (~> 0.6.3)
95
- json_pure
96
- rubyzip
97
- sqlite3-ruby (1.2.5)
98
- thor (0.14.6)
99
- treetop (1.4.9)
100
- polyglot (>= 0.3.1)
101
- tzinfo (0.3.24)
102
- xpath (0.1.3)
103
- nokogiri (~> 1.3)
104
-
105
- PLATFORMS
106
- ruby
107
-
108
- DEPENDENCIES
109
- capybara (>= 0.4.0)
110
- launchy
111
- quo_vadis!
112
- rails (>= 3.0.4)
113
- sqlite3-ruby