devise 3.2.4 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of devise might be problematic. Click here for more details.

Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/.travis.yml +12 -5
  4. data/CHANGELOG.md +28 -1
  5. data/Gemfile +5 -5
  6. data/Gemfile.lock +98 -92
  7. data/README.md +22 -16
  8. data/app/controllers/devise/confirmations_controller.rb +1 -1
  9. data/app/controllers/devise/registrations_controller.rb +18 -5
  10. data/app/controllers/devise/sessions_controller.rb +32 -9
  11. data/app/controllers/devise_controller.rb +3 -3
  12. data/app/views/devise/registrations/new.html.erb +1 -1
  13. data/app/views/devise/sessions/new.html.erb +2 -2
  14. data/app/views/devise/shared/_links.erb +1 -1
  15. data/config/locales/en.yml +16 -15
  16. data/gemfiles/Gemfile.rails-3.2-stable +3 -3
  17. data/gemfiles/Gemfile.rails-3.2-stable.lock +166 -0
  18. data/gemfiles/Gemfile.rails-4.0-stable +4 -4
  19. data/gemfiles/Gemfile.rails-4.0-stable.lock +162 -0
  20. data/gemfiles/Gemfile.rails-head +7 -4
  21. data/gemfiles/Gemfile.rails-head.lock +190 -0
  22. data/lib/devise.rb +8 -4
  23. data/lib/devise/controllers/helpers.rb +77 -6
  24. data/lib/devise/controllers/sign_in_out.rb +0 -1
  25. data/lib/devise/controllers/store_location.rb +8 -2
  26. data/lib/devise/controllers/url_helpers.rb +3 -1
  27. data/lib/devise/failure_app.rb +6 -6
  28. data/lib/devise/hooks/activatable.rb +3 -4
  29. data/lib/devise/hooks/csrf_cleaner.rb +3 -1
  30. data/lib/devise/hooks/timeoutable.rb +8 -1
  31. data/lib/devise/mapping.rb +4 -1
  32. data/lib/devise/models/confirmable.rb +3 -3
  33. data/lib/devise/models/database_authenticatable.rb +7 -3
  34. data/lib/devise/models/lockable.rb +2 -2
  35. data/lib/devise/models/recoverable.rb +23 -7
  36. data/lib/devise/models/rememberable.rb +2 -2
  37. data/lib/devise/models/trackable.rb +4 -1
  38. data/lib/devise/rails/routes.rb +8 -6
  39. data/lib/devise/strategies/authenticatable.rb +7 -0
  40. data/lib/devise/version.rb +1 -1
  41. data/lib/generators/active_record/devise_generator.rb +19 -2
  42. data/lib/generators/templates/README +1 -1
  43. data/lib/generators/templates/devise.rb +3 -0
  44. data/script/cached-bundle +49 -0
  45. data/script/s3-put +71 -0
  46. data/test/controllers/custom_registrations_controller_test.rb +35 -0
  47. data/test/controllers/helpers_test.rb +35 -0
  48. data/test/controllers/internal_helpers_test.rb +1 -1
  49. data/test/controllers/passwords_controller_test.rb +1 -1
  50. data/test/devise_test.rb +18 -5
  51. data/test/failure_app_test.rb +40 -4
  52. data/test/generators/active_record_generator_test.rb +6 -0
  53. data/test/helpers/devise_helper_test.rb +3 -2
  54. data/test/integration/authenticatable_test.rb +19 -3
  55. data/test/integration/confirmable_test.rb +49 -9
  56. data/test/integration/http_authenticatable_test.rb +1 -1
  57. data/test/integration/lockable_test.rb +6 -6
  58. data/test/integration/recoverable_test.rb +5 -5
  59. data/test/integration/registerable_test.rb +32 -22
  60. data/test/integration/timeoutable_test.rb +8 -2
  61. data/test/integration/trackable_test.rb +2 -2
  62. data/test/mailers/confirmation_instructions_test.rb +3 -3
  63. data/test/mailers/reset_password_instructions_test.rb +3 -3
  64. data/test/mailers/unlock_instructions_test.rb +3 -3
  65. data/test/models/authenticatable_test.rb +1 -1
  66. data/test/models/lockable_test.rb +6 -0
  67. data/test/models/recoverable_test.rb +12 -0
  68. data/test/models/rememberable_test.rb +21 -6
  69. data/test/models/trackable_test.rb +28 -0
  70. data/test/models/validatable_test.rb +2 -2
  71. data/test/rails_app/app/active_record/user_on_engine.rb +7 -0
  72. data/test/rails_app/app/active_record/user_on_main_app.rb +7 -0
  73. data/test/rails_app/app/controllers/application_controller.rb +3 -0
  74. data/test/rails_app/app/controllers/application_with_fake_engine.rb +30 -0
  75. data/test/rails_app/app/controllers/custom/registrations_controller.rb +21 -0
  76. data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +1 -1
  77. data/test/rails_app/app/controllers/users_controller.rb +1 -1
  78. data/test/rails_app/app/mongoid/user_on_engine.rb +39 -0
  79. data/test/rails_app/app/mongoid/user_on_main_app.rb +39 -0
  80. data/test/rails_app/config/application.rb +1 -1
  81. data/test/rails_app/config/initializers/devise.rb +2 -0
  82. data/test/rails_app/config/routes.rb +17 -0
  83. data/test/rails_app/lib/shared_user.rb +1 -1
  84. data/test/rails_app/lib/shared_user_without_omniauth.rb +13 -0
  85. data/test/routes_test.rb +5 -3
  86. data/test/support/assertions.rb +2 -3
  87. data/test/support/integration.rb +2 -2
  88. data/test/test_helper.rb +2 -0
  89. data/test/test_helpers_test.rb +22 -32
  90. metadata +23 -2
@@ -38,7 +38,7 @@ class Devise::ConfirmationsController < DeviseController
38
38
 
39
39
  # The path used after confirmation.
40
40
  def after_confirmation_path_for(resource_name, resource)
41
- if signed_in?
41
+ if signed_in?(resource_name)
42
42
  signed_in_root_path(resource)
43
43
  else
44
44
  new_session_path(resource_name)
@@ -5,6 +5,10 @@ class Devise::RegistrationsController < DeviseController
5
5
  # GET /resource/sign_up
6
6
  def new
7
7
  build_resource({})
8
+ @validatable = devise_mapping.validatable?
9
+ if @validatable
10
+ @minimum_password_length = resource_class.password_length.min
11
+ end
8
12
  respond_with self.resource
9
13
  end
10
14
 
@@ -12,8 +16,9 @@ class Devise::RegistrationsController < DeviseController
12
16
  def create
13
17
  build_resource(sign_up_params)
14
18
 
15
- if resource.save
16
- yield resource if block_given?
19
+ resource_saved = resource.save
20
+ yield resource if block_given?
21
+ if resource_saved
17
22
  if resource.active_for_authentication?
18
23
  set_flash_message :notice, :signed_up if is_flashing_format?
19
24
  sign_up(resource_name, resource)
@@ -25,6 +30,10 @@ class Devise::RegistrationsController < DeviseController
25
30
  end
26
31
  else
27
32
  clean_up_passwords resource
33
+ @validatable = devise_mapping.validatable?
34
+ if @validatable
35
+ @minimum_password_length = resource_class.password_length.min
36
+ end
28
37
  respond_with resource
29
38
  end
30
39
  end
@@ -41,8 +50,9 @@ class Devise::RegistrationsController < DeviseController
41
50
  self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
42
51
  prev_unconfirmed_email = resource.unconfirmed_email if resource.respond_to?(:unconfirmed_email)
43
52
 
44
- if update_resource(resource, account_update_params)
45
- yield resource if block_given?
53
+ resource_updated = update_resource(resource, account_update_params)
54
+ yield resource if block_given?
55
+ if resource_updated
46
56
  if is_flashing_format?
47
57
  flash_key = update_needs_confirmation?(resource, prev_unconfirmed_email) ?
48
58
  :update_needs_confirmation : :updated
@@ -110,7 +120,10 @@ class Devise::RegistrationsController < DeviseController
110
120
  # The path used after sign up for inactive accounts. You need to overwrite
111
121
  # this method in your own RegistrationsController.
112
122
  def after_inactive_sign_up_path_for(resource)
113
- respond_to?(:root_path) ? root_path : "/"
123
+ scope = Devise::Mapping.find_scope!(resource)
124
+ router_name = Devise.mappings[scope].router_name
125
+ context = router_name ? send(router_name) : self
126
+ context.respond_to?(:root_path) ? context.root_path : "/"
114
127
  end
115
128
 
116
129
  # The default url to be used after updating a resource. You need to overwrite
@@ -1,6 +1,7 @@
1
1
  class Devise::SessionsController < DeviseController
2
2
  prepend_before_filter :require_no_authentication, only: [ :new, :create ]
3
3
  prepend_before_filter :allow_params_authentication!, only: :create
4
+ prepend_before_filter :verify_signed_out_user, only: :destroy
4
5
  prepend_before_filter only: [ :create, :destroy ] { request.env["devise.skip_timeout"] = true }
5
6
 
6
7
  # GET /resource/sign_in
@@ -21,17 +22,10 @@ class Devise::SessionsController < DeviseController
21
22
 
22
23
  # DELETE /resource/sign_out
23
24
  def destroy
24
- redirect_path = after_sign_out_path_for(resource_name)
25
25
  signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
26
26
  set_flash_message :notice, :signed_out if signed_out && is_flashing_format?
27
- yield resource if block_given?
28
-
29
- # We actually need to hardcode this as Rails default responder doesn't
30
- # support returning empty response on GET request
31
- respond_to do |format|
32
- format.all { head :no_content }
33
- format.any(*navigational_formats) { redirect_to redirect_path }
34
- end
27
+ yield if block_given?
28
+ respond_to_on_destroy
35
29
  end
36
30
 
37
31
  protected
@@ -50,4 +44,33 @@ class Devise::SessionsController < DeviseController
50
44
  def auth_options
51
45
  { scope: resource_name, recall: "#{controller_path}#new" }
52
46
  end
47
+
48
+ private
49
+
50
+ # Check if there is no signed in user before doing the sign out.
51
+ #
52
+ # If there is no signed in user, it will set the flash message and redirect
53
+ # to the after_sign_out path.
54
+ def verify_signed_out_user
55
+ if all_signed_out?
56
+ set_flash_message :notice, :already_signed_out if is_flashing_format?
57
+
58
+ respond_to_on_destroy
59
+ end
60
+ end
61
+
62
+ def all_signed_out?
63
+ users = Devise.mappings.keys.map { |s| warden.user(scope: s, run_callbacks: false) }
64
+
65
+ users.all?(&:blank?)
66
+ end
67
+
68
+ def respond_to_on_destroy
69
+ # We actually need to hardcode this as Rails default responder doesn't
70
+ # support returning empty response on GET request
71
+ respond_to do |format|
72
+ format.all { head :no_content }
73
+ format.any(*navigational_formats) { redirect_to after_sign_out_path_for(resource_name) }
74
+ end
75
+ end
53
76
  end
@@ -6,8 +6,8 @@ class DeviseController < Devise.parent_controller.constantize
6
6
 
7
7
  helpers = %w(resource scope_name resource_name signed_in_resource
8
8
  resource_class resource_params devise_mapping)
9
- hide_action *helpers
10
- helper_method *helpers
9
+ hide_action(*helpers)
10
+ helper_method(*helpers)
11
11
 
12
12
  prepend_before_filter :assert_is_devise_resource!
13
13
  respond_to :html if mimes_for_respond_to.empty?
@@ -44,7 +44,7 @@ class DeviseController < Devise.parent_controller.constantize
44
44
  # loaded before even having a request object.
45
45
  def _prefixes #:nodoc:
46
46
  @_prefixes ||= if self.class.scoped_views? && request && devise_mapping
47
- super.unshift("#{devise_mapping.scoped_path}/#{controller_name}")
47
+ ["#{devise_mapping.scoped_path}/#{controller_name}"] + super
48
48
  else
49
49
  super
50
50
  end
@@ -6,7 +6,7 @@
6
6
  <div><%= f.label :email %><br />
7
7
  <%= f.email_field :email, autofocus: true %></div>
8
8
 
9
- <div><%= f.label :password %><br />
9
+ <div><%= f.label :password %> <% if @validatable %><i>(<%= @minimum_password_length %> characters minimum)</i><% end %><br />
10
10
  <%= f.password_field :password, autocomplete: "off" %></div>
11
11
 
12
12
  <div><%= f.label :password_confirmation %><br />
@@ -1,4 +1,4 @@
1
- <h2>Sign in</h2>
1
+ <h2>Log in</h2>
2
2
 
3
3
  <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
4
4
  <div><%= f.label :email %><br />
@@ -11,7 +11,7 @@
11
11
  <div><%= f.check_box :remember_me %> <%= f.label :remember_me %></div>
12
12
  <% end -%>
13
13
 
14
- <div><%= f.submit "Sign in" %></div>
14
+ <div><%= f.submit "Log in" %></div>
15
15
  <% end %>
16
16
 
17
17
  <%= render "devise/shared/links" %>
@@ -1,5 +1,5 @@
1
1
  <%- if controller_name != 'sessions' %>
2
- <%= link_to "Sign in", new_session_path(resource_name) %><br />
2
+ <%= link_to "Log in", new_session_path(resource_name) %><br />
3
3
  <% end -%>
4
4
 
5
5
  <%- if devise_mapping.registerable? && controller_name != 'registrations' %>
@@ -3,26 +3,26 @@
3
3
  en:
4
4
  devise:
5
5
  confirmations:
6
- confirmed: "Your account was successfully confirmed."
7
- send_instructions: "You will receive an email with instructions about how to confirm your account in a few minutes."
8
- send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions about how to confirm your account in a few minutes."
6
+ confirmed: "Your email address has been successfully confirmed."
7
+ send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
8
+ send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
9
9
  failure:
10
10
  already_authenticated: "You are already signed in."
11
11
  inactive: "Your account is not activated yet."
12
12
  invalid: "Invalid email or password."
13
13
  locked: "Your account is locked."
14
- last_attempt: "You have one more attempt before your account will be locked."
15
- not_found_in_database: "Invalid email or password."
14
+ last_attempt: "You have one more attempt before your account is locked."
15
+ not_found_in_database: "Invalid email address or password."
16
16
  timeout: "Your session expired. Please sign in again to continue."
17
17
  unauthenticated: "You need to sign in or sign up before continuing."
18
- unconfirmed: "You have to confirm your account before continuing."
18
+ unconfirmed: "You have to confirm your email address before continuing."
19
19
  mailer:
20
20
  confirmation_instructions:
21
21
  subject: "Confirmation instructions"
22
22
  reset_password_instructions:
23
23
  subject: "Reset password instructions"
24
24
  unlock_instructions:
25
- subject: "Unlock Instructions"
25
+ subject: "Unlock instructions"
26
26
  omniauth_callbacks:
27
27
  failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
28
28
  success: "Successfully authenticated from %{kind} account."
@@ -30,22 +30,23 @@ en:
30
30
  no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
31
31
  send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
32
32
  send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
33
- updated: "Your password was changed successfully. You are now signed in."
34
- updated_not_active: "Your password was changed successfully."
33
+ updated: "Your password has been changed successfully. You are now signed in."
34
+ updated_not_active: "Your password has been changed successfully."
35
35
  registrations:
36
- destroyed: "Bye! Your account was successfully cancelled. We hope to see you again soon."
36
+ destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
37
37
  signed_up: "Welcome! You have signed up successfully."
38
38
  signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
39
39
  signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
40
- signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please open the link to activate your account."
41
- update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and click on the confirm link to finalize confirming your new email address."
42
- updated: "You updated your account successfully."
40
+ signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
41
+ update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address."
42
+ updated: "Your account has been updated successfully."
43
43
  sessions:
44
44
  signed_in: "Signed in successfully."
45
45
  signed_out: "Signed out successfully."
46
+ already_signed_out: "Signed out successfully."
46
47
  unlocks:
47
- send_instructions: "You will receive an email with instructions about how to unlock your account in a few minutes."
48
- send_paranoid_instructions: "If your account exists, you will receive an email with instructions about how to unlock it in a few minutes."
48
+ send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
49
+ send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
49
50
  unlocked: "Your account has been unlocked successfully. Please sign in to continue."
50
51
  errors:
51
52
  messages:
@@ -3,15 +3,15 @@ source "https://rubygems.org"
3
3
  gemspec path: '..'
4
4
 
5
5
  gem "rails", github: 'rails/rails', branch: '3-2-stable'
6
- gem "omniauth", "~> 1.0.0"
7
- gem "omniauth-oauth2", "~> 1.0.0"
6
+ gem "omniauth", "~> 1.2.0"
7
+ gem "omniauth-oauth2", "~> 1.1.0"
8
8
  gem "rdoc"
9
9
 
10
10
  group :test do
11
11
  gem "omniauth-facebook"
12
12
  gem "omniauth-openid", "~> 1.0.1"
13
13
  gem "webrat", "0.7.3", require: false
14
- gem "mocha", "~> 1.0.0", require: false
14
+ gem "mocha", "~> 1.1", require: false
15
15
  end
16
16
 
17
17
  platforms :jruby do
@@ -0,0 +1,166 @@
1
+ GIT
2
+ remote: git://github.com/rails/rails.git
3
+ revision: 11fd052aa815ae0255ea5b2463e88138fb3fec61
4
+ branch: 3-2-stable
5
+ specs:
6
+ actionmailer (3.2.19)
7
+ actionpack (= 3.2.19)
8
+ mail (~> 2.5.4)
9
+ actionpack (3.2.19)
10
+ activemodel (= 3.2.19)
11
+ activesupport (= 3.2.19)
12
+ builder (~> 3.0.0)
13
+ erubis (~> 2.7.0)
14
+ journey (~> 1.0.4)
15
+ rack (~> 1.4.5)
16
+ rack-cache (~> 1.2)
17
+ rack-test (~> 0.6.1)
18
+ sprockets (~> 2.2.1)
19
+ activemodel (3.2.19)
20
+ activesupport (= 3.2.19)
21
+ builder (~> 3.0.0)
22
+ activerecord (3.2.19)
23
+ activemodel (= 3.2.19)
24
+ activesupport (= 3.2.19)
25
+ arel (~> 3.0.2)
26
+ tzinfo (~> 0.3.29)
27
+ activeresource (3.2.19)
28
+ activemodel (= 3.2.19)
29
+ activesupport (= 3.2.19)
30
+ activesupport (3.2.19)
31
+ i18n (~> 0.6, >= 0.6.4)
32
+ multi_json (~> 1.0)
33
+ rails (3.2.19)
34
+ actionmailer (= 3.2.19)
35
+ actionpack (= 3.2.19)
36
+ activerecord (= 3.2.19)
37
+ activeresource (= 3.2.19)
38
+ activesupport (= 3.2.19)
39
+ bundler (~> 1.0)
40
+ railties (= 3.2.19)
41
+ railties (3.2.19)
42
+ actionpack (= 3.2.19)
43
+ activesupport (= 3.2.19)
44
+ rack-ssl (~> 1.3.2)
45
+ rake (>= 0.8.7)
46
+ rdoc (~> 3.4)
47
+ thor (>= 0.14.6, < 2.0)
48
+
49
+ PATH
50
+ remote: ..
51
+ specs:
52
+ devise (3.3.0)
53
+ bcrypt (~> 3.0)
54
+ orm_adapter (~> 0.1)
55
+ railties (>= 3.2.6, < 5)
56
+ thread_safe (~> 0.1)
57
+ warden (~> 1.2.3)
58
+
59
+ GEM
60
+ remote: https://rubygems.org/
61
+ specs:
62
+ arel (3.0.3)
63
+ bcrypt (3.1.7)
64
+ builder (3.0.4)
65
+ erubis (2.7.0)
66
+ faraday (0.9.0)
67
+ multipart-post (>= 1.2, < 3)
68
+ hashie (3.2.0)
69
+ hike (1.2.3)
70
+ i18n (0.6.11)
71
+ journey (1.0.4)
72
+ json (1.8.1)
73
+ jwt (1.0.0)
74
+ mail (2.5.4)
75
+ mime-types (~> 1.16)
76
+ treetop (~> 1.4.8)
77
+ metaclass (0.0.4)
78
+ mime-types (1.25.1)
79
+ mini_portile (0.6.0)
80
+ mocha (1.1.0)
81
+ metaclass (~> 0.0.1)
82
+ mongoid (3.1.6)
83
+ activemodel (~> 3.2)
84
+ moped (~> 1.4)
85
+ origin (~> 1.0)
86
+ tzinfo (~> 0.3.29)
87
+ moped (1.5.2)
88
+ multi_json (1.10.1)
89
+ multi_xml (0.5.5)
90
+ multipart-post (2.0.0)
91
+ nokogiri (1.6.3.1)
92
+ mini_portile (= 0.6.0)
93
+ oauth2 (0.9.4)
94
+ faraday (>= 0.8, < 0.10)
95
+ jwt (~> 1.0)
96
+ multi_json (~> 1.3)
97
+ multi_xml (~> 0.5)
98
+ rack (~> 1.2)
99
+ omniauth (1.2.2)
100
+ hashie (>= 1.2, < 4)
101
+ rack (~> 1.0)
102
+ omniauth-facebook (1.6.0)
103
+ omniauth-oauth2 (~> 1.1)
104
+ omniauth-oauth2 (1.1.2)
105
+ faraday (>= 0.8, < 0.10)
106
+ multi_json (~> 1.3)
107
+ oauth2 (~> 0.9.3)
108
+ omniauth (~> 1.2)
109
+ omniauth-openid (1.0.1)
110
+ omniauth (~> 1.0)
111
+ rack-openid (~> 1.3.1)
112
+ origin (1.1.0)
113
+ orm_adapter (0.5.0)
114
+ polyglot (0.3.5)
115
+ rack (1.4.5)
116
+ rack-cache (1.2)
117
+ rack (>= 0.4)
118
+ rack-openid (1.3.1)
119
+ rack (>= 1.1.0)
120
+ ruby-openid (>= 2.1.8)
121
+ rack-ssl (1.3.4)
122
+ rack
123
+ rack-test (0.6.2)
124
+ rack (>= 1.0)
125
+ rake (10.3.2)
126
+ rdoc (3.12.2)
127
+ json (~> 1.4)
128
+ ruby-openid (2.5.0)
129
+ sprockets (2.2.2)
130
+ hike (~> 1.2)
131
+ multi_json (~> 1.0)
132
+ rack (~> 1.0)
133
+ tilt (~> 1.1, != 1.3.0)
134
+ sqlite3 (1.3.9)
135
+ thor (0.19.1)
136
+ thread_safe (0.3.4)
137
+ tilt (1.4.1)
138
+ treetop (1.4.15)
139
+ polyglot
140
+ polyglot (>= 0.3.1)
141
+ tzinfo (0.3.40)
142
+ warden (1.2.3)
143
+ rack (>= 1.0)
144
+ webrat (0.7.3)
145
+ nokogiri (>= 1.2.0)
146
+ rack (>= 1.0)
147
+ rack-test (>= 0.5.3)
148
+
149
+ PLATFORMS
150
+ ruby
151
+
152
+ DEPENDENCIES
153
+ activerecord-jdbc-adapter
154
+ activerecord-jdbcsqlite3-adapter
155
+ devise!
156
+ jruby-openssl
157
+ mocha (~> 1.1)
158
+ mongoid (~> 3.0)
159
+ omniauth (~> 1.2.0)
160
+ omniauth-facebook
161
+ omniauth-oauth2 (~> 1.1.0)
162
+ omniauth-openid (~> 1.0.1)
163
+ rails!
164
+ rdoc
165
+ sqlite3
166
+ webrat (= 0.7.3)
@@ -3,15 +3,15 @@ source "https://rubygems.org"
3
3
  gemspec path: '..'
4
4
 
5
5
  gem "rails", github: 'rails/rails', branch: '4-0-stable'
6
- gem "omniauth", "~> 1.0.0"
7
- gem "omniauth-oauth2", "~> 1.0.0"
6
+ gem "omniauth", "~> 1.2.0"
7
+ gem "omniauth-oauth2", "~> 1.1.0"
8
8
  gem "rdoc"
9
9
 
10
10
  group :test do
11
11
  gem "omniauth-facebook"
12
12
  gem "omniauth-openid", "~> 1.0.1"
13
13
  gem "webrat", "0.7.3", require: false
14
- gem "mocha", "~> 1.0.0", require: false
14
+ gem "mocha", "~> 1.1", require: false
15
15
  end
16
16
 
17
17
  platforms :jruby do
@@ -25,5 +25,5 @@ platforms :ruby do
25
25
  end
26
26
 
27
27
  group :mongoid do
28
- gem "mongoid", github: "mongoid/mongoid", branch: "master"
28
+ gem "mongoid", "~> 4.0.0"
29
29
  end