Skip to content

Commit 7eeed86

Browse files
dks17MaicolBen
authored andcommitted
Drop Devise Trackable module (#1075)
1 parent 7e4550a commit 7eeed86

23 files changed

+60
-215
lines changed

app/controllers/devise_token_auth/confirmations_controller.rb

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,27 @@ class ConfirmationsController < DeviseTokenAuth::ApplicationController
55
def show
66
@resource = resource_class.confirm_by_token(params[:confirmation_token])
77

8-
if @resource.persisted?
9-
expiry = nil
10-
if defined?(@resource.sign_in_count) && @resource.sign_in_count > 0
11-
expiry = (Time.zone.now + 1.second).to_i
12-
end
13-
14-
client_id, token = @resource.create_token expiry: expiry
15-
16-
sign_in(@resource)
17-
@resource.save!
18-
8+
if @resource.errors.empty?
199
yield @resource if block_given?
2010

2111
redirect_header_options = { account_confirmation_success: true }
22-
redirect_headers = build_redirect_headers(token,
23-
client_id,
24-
redirect_header_options)
2512

26-
# give redirect value from params priority
27-
@redirect_url = params[:redirect_url]
13+
# give redirect value from params priority or fall back to default value if provided
14+
redirect_url = params[:redirect_url] || DeviseTokenAuth.default_confirm_success_url
15+
16+
if signed_in?(resource_name)
17+
client_id, token = signed_in_resource.create_token
2818

29-
# fall back to default value if provided
30-
@redirect_url ||= DeviseTokenAuth.default_confirm_success_url
19+
redirect_headers = build_redirect_headers(token,
20+
client_id,
21+
redirect_header_options)
3122

23+
redirect_to_link = signed_in_resource.build_auth_url(redirect_url, redirect_headers)
24+
else
25+
redirect_to_link = DeviseTokenAuth::Url.generate(redirect_url, redirect_header_options)
26+
end
3227

33-
redirect_to(@resource.build_auth_url(@redirect_url, redirect_headers))
28+
redirect_to(redirect_to_link)
3429
else
3530
raise ActionController::RoutingError, 'Not Found'
3631
end

app/models/devise_token_auth/concerns/user.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def self.tokens_match?(token_hash, token)
2020
devise_modules.delete(:omniauthable)
2121
else
2222
devise :database_authenticatable, :registerable,
23-
:recoverable, :trackable, :validatable, :confirmable
23+
:recoverable, :validatable, :confirmable
2424
end
2525

2626
if const_defined?('ActiveRecord') && ancestors.include?(ActiveRecord::Base)

lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,6 @@ class DeviseTokenAuthCreate<%= user_class.pluralize.gsub("::","") %> < ActiveRec
1717
## Rememberable
1818
t.datetime :remember_created_at
1919

20-
## Trackable
21-
t.integer :sign_in_count, :default => 0, :null => false
22-
t.datetime :current_sign_in_at
23-
t.datetime :last_sign_in_at
24-
t.string :current_sign_in_ip
25-
t.string :last_sign_in_ip
26-
2720
## Confirmable
2821
t.string :confirmation_token
2922
t.datetime :confirmed_at

lib/generators/devise_token_auth/templates/user_mongoid.rb.erb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,6 @@ class <%= user_class %>
2424
## Rememberable
2525
field :remember_created_at, type: Time
2626

27-
## Trackable
28-
field :sign_in_count, type: Integer, default: 0
29-
field :current_sign_in_at, type: Time
30-
field :last_sign_in_at, type: Time
31-
field :current_sign_in_ip, type: String
32-
field :last_sign_in_ip, type: String
33-
3427
## Confirmable
3528
field :confirmation_token, type: String
3629
field :confirmed_at, type: Time

test/controllers/devise_token_auth/confirmations_controller_test.rb

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def token_and_client_config_from(body)
2323
@new_user.send_confirmation_instructions(redirect_url: @redirect_url)
2424
mail = ActionMailer::Base.deliveries.last
2525
@token, @client_config = token_and_client_config_from(mail.body)
26+
@token_params = %w[access-token client client_id config expiry token uid]
2627
end
2728

2829
test 'should generate raw token' do
@@ -38,32 +39,52 @@ def token_and_client_config_from(body)
3839
end
3940

4041
describe 'success' do
41-
before do
42-
get :show,
43-
params: { confirmation_token: @token,
44-
redirect_url: @redirect_url },
45-
xhr: true
46-
@resource = assigns(:resource)
47-
end
42+
describe 'when authenticated' do
43+
before do
44+
sign_in(@new_user)
45+
get :show,
46+
params: { confirmation_token: @token,
47+
redirect_url: @redirect_url },
48+
xhr: true
49+
@resource = assigns(:resource)
50+
end
4851

49-
test 'user should now be confirmed' do
50-
assert @resource.confirmed?
51-
end
52+
test 'user should now be confirmed' do
53+
assert @resource.confirmed?
54+
end
5255

53-
test 'should redirect to success url' do
54-
assert_redirected_to(/^#{@redirect_url}/)
55-
end
56+
test 'should redirect to success url' do
57+
assert_redirected_to(/^#{@redirect_url}/)
58+
end
5659

57-
test 'the sign_in_count should be 1' do
58-
assert @resource.sign_in_count == 1
60+
test 'redirect url includes token params' do
61+
assert @token_params.all? { |param| response.body.include?(param) }
62+
assert response.body.include?('account_confirmation_success')
63+
end
5964
end
6065

61-
test 'User shoud have the signed in info filled' do
62-
assert @resource.current_sign_in_at?
63-
end
66+
describe 'when unauthenticated' do
67+
before do
68+
sign_out(@new_user)
69+
get :show,
70+
params: { confirmation_token: @token,
71+
redirect_url: @redirect_url },
72+
xhr: true
73+
@resource = assigns(:resource)
74+
end
6475

65-
test 'User shoud have the Last checkin filled' do
66-
assert @resource.last_sign_in_at?
76+
test 'user should now be confirmed' do
77+
assert @resource.confirmed?
78+
end
79+
80+
test 'should redirect to success url' do
81+
assert_redirected_to(/^#{@redirect_url}/)
82+
end
83+
84+
test 'redirect url does not include token params' do
85+
refute @token_params.any? { |param| response.body.include?(param) }
86+
assert response.body.include?('account_confirmation_success')
87+
end
6788
end
6889
end
6990

test/controllers/devise_token_auth/sessions_controller_test.rb

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,6 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
1717

1818
describe 'success' do
1919
before do
20-
@old_sign_in_count = @existing_user.sign_in_count
21-
@old_current_sign_in_at = @existing_user.current_sign_in_at
22-
@old_last_sign_in_at = @existing_user.last_sign_in_at
23-
@old_sign_in_ip = @existing_user.current_sign_in_ip
24-
@old_last_sign_in_ip = @existing_user.last_sign_in_ip
25-
2620
post :create,
2721
params: {
2822
email: @existing_user.email,
@@ -31,12 +25,6 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
3125

3226
@resource = assigns(:resource)
3327
@data = JSON.parse(response.body)
34-
35-
@new_sign_in_count = @resource.sign_in_count
36-
@new_current_sign_in_at = @resource.current_sign_in_at
37-
@new_last_sign_in_at = @resource.last_sign_in_at
38-
@new_sign_in_ip = @resource.current_sign_in_ip
39-
@new_last_sign_in_ip = @resource.last_sign_in_ip
4028
end
4129

4230
test 'request should succeed' do
@@ -47,32 +35,6 @@ class DeviseTokenAuth::SessionsControllerTest < ActionController::TestCase
4735
assert_equal @existing_user.email, @data['data']['email']
4836
end
4937

50-
describe 'trackable' do
51-
test 'sign_in_count incrementns' do
52-
assert_equal @old_sign_in_count + 1, @new_sign_in_count
53-
end
54-
55-
test 'current_sign_in_at is updated' do
56-
refute @old_current_sign_in_at
57-
assert @new_current_sign_in_at
58-
end
59-
60-
test 'last_sign_in_at is updated' do
61-
refute @old_last_sign_in_at
62-
assert @new_last_sign_in_at
63-
end
64-
65-
test 'sign_in_ip is updated' do
66-
refute @old_sign_in_ip
67-
assert_equal '0.0.0.0', @new_sign_in_ip
68-
end
69-
70-
test 'last_sign_in_ip is updated' do
71-
refute @old_last_sign_in_ip
72-
assert_equal '0.0.0.0', @new_last_sign_in_ip
73-
end
74-
end
75-
7638
describe "with multiple clients and headers don't change in each request" do
7739
before do
7840
# Set the max_number_of_devices to a lower number

test/dummy/app/active_record/scoped_user.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
class ScopedUser < ActiveRecord::Base
44
# Include default devise modules.
55
devise :database_authenticatable, :registerable,
6-
:recoverable, :rememberable, :trackable,
6+
:recoverable, :rememberable,
77
:validatable, :confirmable, :omniauthable
88
include DeviseTokenAuth::Concerns::User
99
end

test/dummy/app/active_record/unconfirmable_user.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
class UnconfirmableUser < ActiveRecord::Base
44
# Include default devise modules.
55
devise :database_authenticatable, :registerable,
6-
:recoverable, :rememberable, :trackable,
6+
:recoverable, :rememberable,
77
:validatable, :omniauthable
88
include DeviseTokenAuth::Concerns::User
99
end

test/dummy/app/active_record/unregisterable_user.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
class UnregisterableUser < ActiveRecord::Base
44
# Include default devise modules.
55
devise :database_authenticatable, :recoverable,
6-
:trackable, :validatable, :confirmable,
6+
:validatable, :confirmable,
77
:omniauthable
88
include DeviseTokenAuth::Concerns::User
99
end

test/dummy/app/mongoid/mang.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,6 @@ class Mang
2929
## Rememberable
3030
field :remember_created_at, type: Time
3131

32-
## Trackable
33-
field :sign_in_count, type: Integer, default: 0
34-
field :current_sign_in_at, type: Time
35-
field :last_sign_in_at, type: Time
36-
field :current_sign_in_ip, type: String
37-
field :last_sign_in_ip, type: String
38-
3932
## Confirmable
4033
field :confirmation_token, type: String
4134
field :confirmed_at, type: Time

test/dummy/app/mongoid/scoped_user.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,6 @@ class ScopedUser
2929
## Rememberable
3030
field :remember_created_at, type: Time
3131

32-
## Trackable
33-
field :sign_in_count, type: Integer, default: 0
34-
field :current_sign_in_at, type: Time
35-
field :last_sign_in_at, type: Time
36-
field :current_sign_in_ip, type: String
37-
field :last_sign_in_ip, type: String
38-
3932
## Confirmable
4033
field :confirmation_token, type: String
4134
field :confirmed_at, type: Time

test/dummy/app/mongoid/unconfirmable_user.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,6 @@ class UnconfirmableUser
2929
## Rememberable
3030
field :remember_created_at, type: Time
3131

32-
## Trackable
33-
field :sign_in_count, type: Integer, default: 0
34-
field :current_sign_in_at, type: Time
35-
field :last_sign_in_at, type: Time
36-
field :current_sign_in_ip, type: String
37-
field :last_sign_in_ip, type: String
38-
3932
## Required
4033
field :provider, type: String
4134
field :uid, type: String, default: ''

test/dummy/app/mongoid/unregisterable_user.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,6 @@ class UnregisterableUser
2626
field :reset_password_redirect_url, type: String
2727
field :allow_password_change, type: Boolean, default: false
2828

29-
## Trackable
30-
field :sign_in_count, type: Integer, default: 0
31-
field :current_sign_in_at, type: Time
32-
field :last_sign_in_at, type: Time
33-
field :current_sign_in_ip, type: String
34-
field :last_sign_in_ip, type: String
35-
3629
## Confirmable
3730
field :confirmation_token, type: String
3831
field :confirmed_at, type: Time

test/dummy/app/mongoid/user.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,6 @@ class User
3131
## Rememberable
3232
field :remember_created_at, type: Time
3333

34-
## Trackable
35-
field :sign_in_count, type: Integer, default: 0
36-
field :current_sign_in_at, type: Time
37-
field :last_sign_in_at, type: Time
38-
field :current_sign_in_ip, type: String
39-
field :last_sign_in_ip, type: String
40-
4134
## Confirmable
4235
field :confirmation_token, type: String
4336
field :confirmed_at, type: Time

test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ def change
1818
## Rememberable
1919
t.datetime :remember_created_at
2020

21-
## Trackable
22-
t.integer :sign_in_count, default: 0, null: false
23-
t.datetime :current_sign_in_at
24-
t.datetime :last_sign_in_at
25-
t.string :current_sign_in_ip
26-
t.string :last_sign_in_ip
27-
2821
## Confirmable
2922
t.string :confirmation_token
3023
t.datetime :confirmed_at

test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ def change
1818
## Rememberable
1919
t.datetime :remember_created_at
2020

21-
## Trackable
22-
t.integer :sign_in_count, default: 0, null: false
23-
t.datetime :current_sign_in_at
24-
t.datetime :last_sign_in_at
25-
t.string :current_sign_in_ip
26-
t.string :last_sign_in_ip
27-
2821
## Confirmable
2922
t.string :confirmation_token
3023
t.datetime :confirmed_at

test/dummy/db/migrate/20141222035835_devise_token_auth_create_only_email_users.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,6 @@ def change
1919
## Rememberable
2020
#t.datetime :remember_created_at
2121

22-
## Trackable
23-
#t.integer :sign_in_count, :default => 0, :null => false
24-
#t.datetime :current_sign_in_at
25-
#t.datetime :last_sign_in_at
26-
#t.string :current_sign_in_ip
27-
#t.string :last_sign_in_ip
28-
2922
## Confirmable
3023
#t.string :confirmation_token
3124
#t.datetime :confirmed_at

test/dummy/db/migrate/20141222053502_devise_token_auth_create_unregisterable_users.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,6 @@ def change
2020
## Rememberable
2121
t.datetime :remember_created_at
2222

23-
## Trackable
24-
t.integer :sign_in_count, default: 0, null: false
25-
t.datetime :current_sign_in_at
26-
t.datetime :last_sign_in_at
27-
t.string :current_sign_in_ip
28-
t.string :last_sign_in_ip
29-
3023
## Confirmable
3124
t.string :confirmation_token
3225
t.datetime :confirmed_at

test/dummy/db/migrate/20150708104536_devise_token_auth_create_unconfirmable_users.rb

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,6 @@ def change
2020
## Rememberable
2121
t.datetime :remember_created_at
2222

23-
## Trackable
24-
t.integer :sign_in_count, default: 0, null: false
25-
t.datetime :current_sign_in_at
26-
t.datetime :last_sign_in_at
27-
t.string :current_sign_in_ip
28-
t.string :last_sign_in_ip
29-
3023
## Confirmable
3124
# t.string :confirmation_token
3225
# t.datetime :confirmed_at

0 commit comments

Comments
 (0)