devise-authy 1.7.0 → 1.8.0

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.
Files changed (50) hide show
  1. checksums.yaml +5 -13
  2. data/.travis.yml +4 -0
  3. data/Gemfile +29 -13
  4. data/README.md +8 -6
  5. data/VERSION +1 -1
  6. data/app/controllers/devise/devise_authy_controller.rb +3 -3
  7. data/authy-devise-demo/Gemfile +39 -28
  8. data/authy-devise-demo/Gemfile.lock +166 -113
  9. data/authy-devise-demo/README.md +1 -1
  10. data/authy-devise-demo/app/controllers/welcome_controller.rb +2 -2
  11. data/authy-devise-demo/app/models/admin.rb +0 -3
  12. data/authy-devise-demo/app/models/user.rb +0 -3
  13. data/authy-devise-demo/config/application.rb +5 -41
  14. data/authy-devise-demo/config/environments/development.rb +21 -17
  15. data/authy-devise-demo/config/environments/production.rb +45 -33
  16. data/authy-devise-demo/config/environments/test.rb +18 -13
  17. data/authy-devise-demo/config/initializers/session_store.rb +1 -1
  18. data/authy-devise-demo/config/locales/devise.authy.en.yml +4 -4
  19. data/authy-devise-demo/config/secrets.yml +22 -0
  20. data/authy-devise-demo/db/migrate/20160906221739_add_sessions_table.rb +12 -0
  21. data/authy-devise-demo/db/schema.rb +32 -22
  22. data/config/locales/en.yml +4 -4
  23. data/devise-authy.gemspec +44 -47
  24. data/lib/devise-authy/controllers/helpers.rb +1 -1
  25. data/lib/devise-authy/controllers/view_helpers.rb +8 -2
  26. data/lib/devise-authy/mapping.rb +3 -7
  27. data/lib/devise-authy/models/authy_authenticatable.rb +1 -1
  28. data/lib/devise-authy/rails.rb +1 -1
  29. data/lib/generators/devise_authy/install_generator.rb +7 -0
  30. data/spec/controllers/devise_authy_controller_spec.rb +61 -60
  31. data/spec/controllers/passwords_controller_spec.rb +15 -15
  32. data/spec/features/authy_authenticatable_spec.rb +23 -23
  33. data/spec/features/authy_lockable_spec.rb +6 -6
  34. data/spec/generators_spec.rb +11 -9
  35. data/spec/models/authy_authenticatable_spec.rb +3 -3
  36. data/spec/models/authy_lockable_spec.rb +7 -7
  37. data/spec/rails-app/Gemfile +4 -3
  38. data/spec/rails-app/Gemfile.lock +116 -91
  39. data/spec/rails-app/app/controllers/welcome_controller.rb +1 -1
  40. data/spec/rails-app/app/models/user.rb +0 -3
  41. data/spec/rails-app/config/application.rb +15 -34
  42. data/spec/rails-app/config/environments/development.rb +21 -17
  43. data/spec/rails-app/config/environments/production.rb +45 -33
  44. data/spec/rails-app/config/environments/test.rb +18 -13
  45. data/spec/rails-app/config/secrets.yml +22 -0
  46. data/spec/routing/routes_spec.rb +7 -7
  47. data/spec/spec_helper.rb +17 -0
  48. data/spec/support/helpers.rb +3 -1
  49. metadata +34 -59
  50. data/Gemfile.lock +0 -194
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe DeviseAuthy::PasswordsController do
4
- include Devise::TestHelpers
3
+ describe DeviseAuthy::PasswordsController, type: :controller do
4
+ include Devise::Test::ControllerHelpers
5
5
 
6
6
  before :each do
7
7
  request.env["devise.mapping"] = Devise.mappings[:user]
@@ -12,16 +12,16 @@ describe DeviseAuthy::PasswordsController do
12
12
  describe "Reset password" do
13
13
  it "Should redirect to verify token view" do
14
14
  user = create_user(:authy_id => 1)
15
- user.reset_password_token = User.reset_password_token
16
- user.reset_password_sent_at = Time.now.utc
17
15
  user.authy_enabled = true
18
16
  user.save
19
17
 
20
- put :update, :user => { :reset_password_token => user.reset_password_token, :password => "password", :password_confirmation => "password" }
18
+ token = user.send_reset_password_instructions
19
+
20
+ put :update, :user => { :reset_password_token => token, :password => "password", :password_confirmation => "password" }
21
21
 
22
22
  user.reload
23
- user.last_sign_in_at.should be_nil
24
- response.should redirect_to(root_url)
23
+ expect(user.last_sign_in_at).to be_nil
24
+ expect(response).to redirect_to(root_url)
25
25
  end
26
26
  end
27
27
  end
@@ -29,20 +29,20 @@ describe DeviseAuthy::PasswordsController do
29
29
  context "when the user don't have 2FA" do
30
30
  describe "Reset password" do
31
31
  it "Should sign in the user" do
32
- user = create_user
33
- user.reset_password_token = User.reset_password_token
34
- user.reset_password_sent_at = Time.now.utc
32
+ user = create_user(:authy_id => 1)
35
33
  user.save
36
34
 
35
+ token = user.send_reset_password_instructions
36
+
37
37
  last_sign_in_at = user.last_sign_in_at
38
38
 
39
- put :update, :user => { :reset_password_token => user.reset_password_token, :password => "password", :password_confirmation => "password" }
40
- response.should redirect_to(root_url)
39
+ put :update, :user => { :reset_password_token => token, :password => "password", :password_confirmation => "password" }
40
+ expect(response).to redirect_to(root_url)
41
41
 
42
42
  user.reload
43
- user.last_sign_in_at.should_not be_nil
44
- flash[:notice].should == "Your password was changed successfully. You are now signed in."
43
+ expect(user.last_sign_in_at).not_to be_nil
44
+ expect(flash[:notice]).to eq("Your password was changed successfully. You are now signed in.")
45
45
  end
46
46
  end
47
47
  end
48
- end
48
+ end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "Authy Autnenticatable", :type => :request do
3
+ describe "Authy Authenticatable", :type => :request do
4
4
  describe "If user don't have two factor authentication should login with email - password" do
5
5
  before :each do
6
6
  @user = create_user(:email => 'foo@bar.com')
@@ -8,18 +8,18 @@ describe "Authy Autnenticatable", :type => :request do
8
8
 
9
9
  it "Sign in should succeed" do
10
10
  fill_sign_in_form('foo@bar.com', '12345678')
11
- current_path.should == root_path
12
- page.should have_content('Signed in successfully.')
11
+ expect(current_path).to eq(root_path)
12
+ expect(page).to have_content('Signed in successfully.')
13
13
  end
14
14
 
15
- it "Sign in shouldn't success" do
15
+ it "Sign in shouldn't succeed" do
16
16
  fill_sign_in_form('foo@bar.com', '14567823')
17
- current_path.should == new_user_session_path
18
- page.should_not have_content('Signed in successfully.')
17
+ expect(current_path).to eq(new_user_session_path)
18
+ expect(page).not_to have_content('Signed in successfully.')
19
19
  end
20
20
  end
21
21
 
22
- describe "If user have two factor authentication" do
22
+ describe "If user has two factor authentication" do
23
23
  before :each do
24
24
  @user = create_user(:authy_id => 1)
25
25
  @user.update_attribute(:authy_enabled, true)
@@ -27,31 +27,31 @@ describe "Authy Autnenticatable", :type => :request do
27
27
 
28
28
  it "Sign in should succeed" do
29
29
  fill_sign_in_form(@user.email, '12345678')
30
- current_path.should == user_verify_authy_path
31
- page.should have_content('Please enter your Authy token')
30
+ expect(current_path).to eq(user_verify_authy_path)
31
+ expect(page).to have_content('Please enter your Authy token')
32
32
 
33
33
  within('#devise_authy') do
34
34
  fill_in 'authy-token', :with => '0000000'
35
35
  end
36
36
  click_on 'Check Token'
37
- current_path.should == root_path
38
- page.should have_content(I18n.t('devise.devise_authy.user.signed_in'))
37
+ expect(current_path).to eq(root_path)
38
+ expect(page).to have_content(I18n.t('devise.devise_authy.user.signed_in'))
39
39
  @user.reload
40
- @user.last_sign_in_with_authy.should_not be_nil
40
+ expect(@user.last_sign_in_with_authy).not_to be_nil
41
41
  end
42
42
 
43
43
  it "Sign in shouldn't succeed" do
44
44
  fill_sign_in_form(@user.email, '12345678')
45
- current_path.should == user_verify_authy_path
46
- page.should have_content('Please enter your Authy token')
45
+ expect(current_path).to eq(user_verify_authy_path)
46
+ expect(page).to have_content('Please enter your Authy token')
47
47
 
48
48
  within('#devise_authy') do
49
49
  fill_in 'authy-token', :with => '324567'
50
50
  end
51
51
  click_on 'Check Token'
52
- current_path.should == user_verify_authy_path
52
+ expect(current_path).to eq(user_verify_authy_path)
53
53
  @user.reload
54
- @user.last_sign_in_with_authy.should be_nil
54
+ expect(@user.last_sign_in_with_authy).to be_nil
55
55
  end
56
56
 
57
57
  describe "With cookie['remember_device']" do
@@ -59,16 +59,16 @@ describe "Authy Autnenticatable", :type => :request do
59
59
  cookie_val = sign_cookie("remember_device", Time.now.to_i - 2.month.to_i)
60
60
  page.driver.browser.set_cookie("remember_device=#{cookie_val}")
61
61
  fill_sign_in_form(@user.email, '12345678')
62
- current_path.should == user_verify_authy_path
63
- page.should have_content('Please enter your Authy token')
62
+ expect(current_path).to eq(user_verify_authy_path)
63
+ expect(page).to have_content('Please enter your Authy token')
64
64
  end
65
65
 
66
66
  it "Shouldn't prompt for a token" do
67
67
  cookie_val = sign_cookie("remember_device", Time.now.to_i)
68
68
  page.driver.browser.set_cookie("remember_device=#{cookie_val}")
69
69
  fill_sign_in_form(@user.email, '12345678')
70
- current_path.should == root_path
71
- page.should have_content("Signed in successfully.")
70
+ expect(current_path).to eq(root_path)
71
+ expect(page).to have_content("Signed in successfully.")
72
72
  end
73
73
  end
74
74
 
@@ -77,14 +77,14 @@ describe "Authy Autnenticatable", :type => :request do
77
77
  page.driver.browser.set_cookie('user_password_checked=true')
78
78
 
79
79
  visit user_verify_authy_path
80
- current_path.should == new_user_session_path
81
- page.should have_content('Sign in')
80
+ expect(current_path).to eq(new_user_session_path)
81
+ expect(page).to have_content('Log in')
82
82
  end
83
83
 
84
84
  it "Click link Request sms" do
85
85
  fill_sign_in_form(@user.email, '12345678')
86
86
  click_link 'Request SMS'
87
- page.should have_content("SMS token was sent")
87
+ expect(page).to have_content("token was sent")
88
88
  end
89
89
  end
90
90
  end
@@ -15,19 +15,19 @@ feature 'Authy Lockable' do
15
15
  end
16
16
 
17
17
  scenario 'account locked when user enters invalid code too many times' do
18
- Devise.maximum_attempts.times do |i|
18
+ (LockableUser.maximum_attempts - 1).times do |i|
19
19
  fill_verify_token_form invalid_authy_token
20
20
  assert_at lockable_user_verify_authy_path
21
21
  expect(page).to have_content('Please enter your Authy token')
22
22
  user.reload
23
- assert_account_locked_for user, nil
23
+ assert_account_locked_for user, false
24
24
  expect(user.failed_attempts).to eq(i + 1)
25
25
  end
26
26
 
27
27
  fill_verify_token_form invalid_authy_token
28
28
  user.reload
29
29
  assert_at new_user_session_path
30
- assert_account_locked_for user
30
+ assert_account_locked_for user, true
31
31
  visit root_path
32
32
  assert_at new_user_session_path
33
33
  end
@@ -48,19 +48,19 @@ feature 'Authy Lockable' do
48
48
  fill_in 'authy-cellphone', with: '8001234567'
49
49
  click_on 'Enable'
50
50
 
51
- Devise.maximum_attempts.times do |i|
51
+ (LockableUser.maximum_attempts - 1).times do |i|
52
52
  fill_in_verify_authy_installation_form invalid_authy_token
53
53
  assert_at lockable_user_verify_authy_installation_path
54
54
  expect(page).to have_content('Verify your account')
55
55
  user.reload
56
- assert_account_locked_for user, nil
56
+ assert_account_locked_for user, false
57
57
  expect(user.failed_attempts).to eq(i + 1)
58
58
  end
59
59
 
60
60
  fill_in_verify_authy_installation_form invalid_authy_token
61
61
  user.reload
62
62
  assert_at new_user_session_path
63
- assert_account_locked_for user
63
+ assert_account_locked_for user, true
64
64
  visit root_path
65
65
  assert_at new_user_session_path
66
66
  end
@@ -13,18 +13,20 @@ describe "generators for devise_authy" do
13
13
 
14
14
  it "rails g should include the generators" do
15
15
  @output = rails_command("g")
16
- @output.include?('devise_authy:install').should be_true
17
- @output.include?('active_record:devise_authy').should be_true
16
+ expect(@output.include?('devise_authy:install')).to be_truthy
17
+ expect(@output.include?('active_record:devise_authy')).to be_truthy
18
18
  end
19
19
 
20
20
  it "rails g devise_authy:install" do
21
21
  @output = rails_command("g", "devise_authy:install", "-s")
22
- @output.include?('config/initializers/devise.rb').should be_true
23
- @output.include?('config/locales/devise.authy.en.yml').should be_true
24
- @output.include?('app/views/devise/devise_authy/enable_authy.html.erb').should be_true
25
- @output.include?('app/views/devise/devise_authy/verify_authy.html.erb').should be_true
26
- @output.include?('app/views/devise/devise_authy/verify_authy_installation.html.erb').should be_true
27
- @output.include?('app/assets/stylesheets/devise_authy.css').should be_true
28
- @output.include?('app/assets/javascripts/devise_authy.js').should be_true
22
+
23
+ expect(@output.include?('config/initializers/devise.rb')).to be_truthy
24
+ expect(@output.include?('authy.rb')).to be_truthy
25
+ expect(@output.include?('config/locales/devise.authy.en.yml')).to be_truthy
26
+ expect(@output.include?('app/views/devise/devise_authy/enable_authy.html.erb')).to be_truthy
27
+ expect(@output.include?('app/views/devise/devise_authy/verify_authy.html.erb')).to be_truthy
28
+ expect(@output.include?('app/views/devise/devise_authy/verify_authy_installation.html.erb')).to be_truthy
29
+ expect(@output.include?('app/assets/stylesheets/devise_authy.css')).to be_truthy
30
+ expect(@output.include?('app/assets/javascripts/devise_authy.js')).to be_truthy
29
31
  end
30
32
  end
@@ -1,17 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Devise::Models::AuthyAuthenticatable do
3
+ describe Devise::Models::AuthyAuthenticatable, type: :model do
4
4
  before(:each) do
5
5
  @user = create_user(:authy_id => '20')
6
6
  end
7
7
 
8
8
  describe "User#find_by_authy_id" do
9
9
  it "Should find the user" do
10
- User.find_by_authy_id('20').should_not be_nil
10
+ expect(User.find_by_authy_id('20')).not_to be_nil
11
11
  end
12
12
 
13
13
  it "Shouldn't find the user" do
14
- User.find_by_authy_id('80').should be_nil
14
+ expect(User.find_by_authy_id('80')).to be_nil
15
15
  end
16
16
  end
17
17
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Devise::Models::AuthyLockable do
3
+ describe Devise::Models::AuthyLockable, type: :controller do
4
4
 
5
5
  context 'model includes Devise::Models::Lockable' do
6
6
 
@@ -9,12 +9,12 @@ describe Devise::Models::AuthyLockable do
9
9
  context '#lockable?' do
10
10
 
11
11
  it 'returns true if lock_strategy is :failed_attempts' do
12
- expect(user.lockable?).to be_true
12
+ expect(user.lockable?).to be_truthy
13
13
  end
14
14
 
15
15
  it 'returns false if lock_strategy is anything other than :failed attempts' do
16
16
  Devise.lock_strategy = :none
17
- expect(user.lockable?).to be_false
17
+ expect(user.lockable?).to be_falsey
18
18
  Devise.lock_strategy = :failed_attempts
19
19
  end
20
20
 
@@ -35,17 +35,17 @@ describe Devise::Models::AuthyLockable do
35
35
 
36
36
  it 'respects the maximum attempts configuration for Devise::Models::Lockable' do
37
37
  4.times { user.invalid_authy_attempt! }
38
- expect(user.send :attempts_exceeded?).to be_true # protected method
39
- expect(user.access_locked?).to be_true
38
+ expect(user.send :attempts_exceeded?).to be_truthy # protected method
39
+ expect(user.access_locked?).to be_truthy
40
40
  end
41
41
 
42
42
  it 'returns true if the account is locked' do
43
43
  3.times { user.invalid_authy_attempt! }
44
- expect(user.invalid_authy_attempt!).to be_true
44
+ expect(user.invalid_authy_attempt!).to be_truthy
45
45
  end
46
46
 
47
47
  it 'returns false if the account is not locked' do
48
- expect(user.invalid_authy_attempt!).to be_false
48
+ expect(user.invalid_authy_attempt!).to be_falsey
49
49
  end
50
50
 
51
51
  end
@@ -1,9 +1,10 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "rails", "~> 3.2.6"
3
+ gem "rails", "~> 4.2.7"
4
+ gem 'json', '>= 1.8.1'
4
5
  gem "sqlite3"
5
6
  gem "rake"
6
7
  gem "authy"
7
- gem "devise"
8
+ gem "devise", '>= 3.0.0'
8
9
  gem "devise-authy", :path => "../.."
9
- gem 'jquery-rails'
10
+ gem 'launchy'
@@ -1,105 +1,126 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- devise-authy (1.5.3)
4
+ devise-authy (1.7.0)
5
5
  authy
6
6
  devise
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actionmailer (3.2.13)
12
- actionpack (= 3.2.13)
13
- mail (~> 2.5.3)
14
- actionpack (3.2.13)
15
- activemodel (= 3.2.13)
16
- activesupport (= 3.2.13)
17
- builder (~> 3.0.0)
11
+ actionmailer (4.2.7.1)
12
+ actionpack (= 4.2.7.1)
13
+ actionview (= 4.2.7.1)
14
+ activejob (= 4.2.7.1)
15
+ mail (~> 2.5, >= 2.5.4)
16
+ rails-dom-testing (~> 1.0, >= 1.0.5)
17
+ actionpack (4.2.7.1)
18
+ actionview (= 4.2.7.1)
19
+ activesupport (= 4.2.7.1)
20
+ rack (~> 1.6)
21
+ rack-test (~> 0.6.2)
22
+ rails-dom-testing (~> 1.0, >= 1.0.5)
23
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
24
+ actionview (4.2.7.1)
25
+ activesupport (= 4.2.7.1)
26
+ builder (~> 3.1)
18
27
  erubis (~> 2.7.0)
19
- journey (~> 1.0.4)
20
- rack (~> 1.4.5)
21
- rack-cache (~> 1.2)
22
- rack-test (~> 0.6.1)
23
- sprockets (~> 2.2.1)
24
- activemodel (3.2.13)
25
- activesupport (= 3.2.13)
26
- builder (~> 3.0.0)
27
- activerecord (3.2.13)
28
- activemodel (= 3.2.13)
29
- activesupport (= 3.2.13)
30
- arel (~> 3.0.2)
31
- tzinfo (~> 0.3.29)
32
- activeresource (3.2.13)
33
- activemodel (= 3.2.13)
34
- activesupport (= 3.2.13)
35
- activesupport (3.2.13)
36
- i18n (= 0.6.1)
37
- multi_json (~> 1.0)
38
- arel (3.0.2)
39
- authy (2.0.1)
40
- httpclient (>= 2.2.6)
41
- bcrypt-ruby (3.0.1)
42
- builder (3.0.4)
43
- devise (2.2.3)
44
- bcrypt-ruby (~> 3.0)
28
+ rails-dom-testing (~> 1.0, >= 1.0.5)
29
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
30
+ activejob (4.2.7.1)
31
+ activesupport (= 4.2.7.1)
32
+ globalid (>= 0.3.0)
33
+ activemodel (4.2.7.1)
34
+ activesupport (= 4.2.7.1)
35
+ builder (~> 3.1)
36
+ activerecord (4.2.7.1)
37
+ activemodel (= 4.2.7.1)
38
+ activesupport (= 4.2.7.1)
39
+ arel (~> 6.0)
40
+ activesupport (4.2.7.1)
41
+ i18n (~> 0.7)
42
+ json (~> 1.7, >= 1.7.7)
43
+ minitest (~> 5.1)
44
+ thread_safe (~> 0.3, >= 0.3.4)
45
+ tzinfo (~> 1.1)
46
+ addressable (2.4.0)
47
+ arel (6.0.3)
48
+ authy (2.7.1)
49
+ httpclient (>= 2.5.3.3)
50
+ bcrypt (3.1.11)
51
+ builder (3.2.2)
52
+ concurrent-ruby (1.0.2)
53
+ devise (4.2.0)
54
+ bcrypt (~> 3.0)
45
55
  orm_adapter (~> 0.1)
46
- railties (~> 3.1)
47
- warden (~> 1.2.1)
56
+ railties (>= 4.1.0, < 5.1)
57
+ responders
58
+ warden (~> 1.2.3)
48
59
  erubis (2.7.0)
49
- hike (1.2.2)
50
- httpclient (2.3.3)
51
- i18n (0.6.1)
52
- journey (1.0.4)
53
- jquery-rails (3.1.4)
54
- railties (>= 3.0, < 5.0)
55
- thor (>= 0.14, < 2.0)
56
- json (1.7.7)
57
- mail (2.5.3)
58
- i18n (>= 0.4.0)
59
- mime-types (~> 1.16)
60
- treetop (~> 1.4.8)
61
- mime-types (1.22)
62
- multi_json (1.7.2)
63
- orm_adapter (0.4.0)
64
- polyglot (0.3.3)
65
- rack (1.4.5)
66
- rack-cache (1.2)
67
- rack (>= 0.4)
68
- rack-ssl (1.3.3)
69
- rack
70
- rack-test (0.6.2)
60
+ globalid (0.3.7)
61
+ activesupport (>= 4.1.0)
62
+ httpclient (2.8.2.3)
63
+ i18n (0.7.0)
64
+ json (1.8.3)
65
+ launchy (2.4.3)
66
+ addressable (~> 2.3)
67
+ loofah (2.0.3)
68
+ nokogiri (>= 1.5.9)
69
+ mail (2.6.4)
70
+ mime-types (>= 1.16, < 4)
71
+ mime-types (3.1)
72
+ mime-types-data (~> 3.2015)
73
+ mime-types-data (3.2016.0521)
74
+ mini_portile2 (2.1.0)
75
+ minitest (5.9.0)
76
+ nokogiri (1.6.8)
77
+ mini_portile2 (~> 2.1.0)
78
+ pkg-config (~> 1.1.7)
79
+ orm_adapter (0.5.0)
80
+ pkg-config (1.1.7)
81
+ rack (1.6.4)
82
+ rack-test (0.6.3)
71
83
  rack (>= 1.0)
72
- rails (3.2.13)
73
- actionmailer (= 3.2.13)
74
- actionpack (= 3.2.13)
75
- activerecord (= 3.2.13)
76
- activeresource (= 3.2.13)
77
- activesupport (= 3.2.13)
78
- bundler (~> 1.0)
79
- railties (= 3.2.13)
80
- railties (3.2.13)
81
- actionpack (= 3.2.13)
82
- activesupport (= 3.2.13)
83
- rack-ssl (~> 1.3.2)
84
+ rails (4.2.7.1)
85
+ actionmailer (= 4.2.7.1)
86
+ actionpack (= 4.2.7.1)
87
+ actionview (= 4.2.7.1)
88
+ activejob (= 4.2.7.1)
89
+ activemodel (= 4.2.7.1)
90
+ activerecord (= 4.2.7.1)
91
+ activesupport (= 4.2.7.1)
92
+ bundler (>= 1.3.0, < 2.0)
93
+ railties (= 4.2.7.1)
94
+ sprockets-rails
95
+ rails-deprecated_sanitizer (1.0.3)
96
+ activesupport (>= 4.2.0.alpha)
97
+ rails-dom-testing (1.0.7)
98
+ activesupport (>= 4.2.0.beta, < 5.0)
99
+ nokogiri (~> 1.6.0)
100
+ rails-deprecated_sanitizer (>= 1.0.1)
101
+ rails-html-sanitizer (1.0.3)
102
+ loofah (~> 2.0)
103
+ railties (4.2.7.1)
104
+ actionpack (= 4.2.7.1)
105
+ activesupport (= 4.2.7.1)
84
106
  rake (>= 0.8.7)
85
- rdoc (~> 3.4)
86
- thor (>= 0.14.6, < 2.0)
87
- rake (10.0.4)
88
- rdoc (3.12.2)
89
- json (~> 1.4)
90
- sprockets (2.2.2)
91
- hike (~> 1.2)
92
- multi_json (~> 1.0)
93
- rack (~> 1.0)
94
- tilt (~> 1.1, != 1.3.0)
95
- sqlite3 (1.3.7)
96
- thor (0.18.1)
97
- tilt (1.3.7)
98
- treetop (1.4.12)
99
- polyglot
100
- polyglot (>= 0.3.1)
101
- tzinfo (0.3.37)
102
- warden (1.2.1)
107
+ thor (>= 0.18.1, < 2.0)
108
+ rake (11.2.2)
109
+ responders (2.3.0)
110
+ railties (>= 4.2.0, < 5.1)
111
+ sprockets (3.7.0)
112
+ concurrent-ruby (~> 1.0)
113
+ rack (> 1, < 3)
114
+ sprockets-rails (3.2.0)
115
+ actionpack (>= 4.0)
116
+ activesupport (>= 4.0)
117
+ sprockets (>= 3.0.0)
118
+ sqlite3 (1.3.11)
119
+ thor (0.19.1)
120
+ thread_safe (0.3.5)
121
+ tzinfo (1.2.2)
122
+ thread_safe (~> 0.1)
123
+ warden (1.2.6)
103
124
  rack (>= 1.0)
104
125
 
105
126
  PLATFORMS
@@ -107,9 +128,13 @@ PLATFORMS
107
128
 
108
129
  DEPENDENCIES
109
130
  authy
110
- devise
131
+ devise (>= 3.0.0)
111
132
  devise-authy!
112
- jquery-rails
113
- rails (~> 3.2.6)
133
+ json (>= 1.8.1)
134
+ launchy
135
+ rails (~> 4.2.7)
114
136
  rake
115
137
  sqlite3
138
+
139
+ BUNDLED WITH
140
+ 1.11.2