devise 3.4.1 → 3.5.10

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.

Potentially problematic release.


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

Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +28 -19
  3. data/CHANGELOG.md +193 -104
  4. data/CODE_OF_CONDUCT.md +22 -0
  5. data/CONTRIBUTING.md +2 -0
  6. data/Gemfile +3 -2
  7. data/Gemfile.lock +90 -95
  8. data/MIT-LICENSE +1 -1
  9. data/README.md +55 -34
  10. data/Rakefile +2 -1
  11. data/app/controllers/devise/confirmations_controller.rb +4 -0
  12. data/app/controllers/devise/omniauth_callbacks_controller.rb +4 -0
  13. data/app/controllers/devise/passwords_controller.rb +14 -4
  14. data/app/controllers/devise/registrations_controller.rb +10 -11
  15. data/app/controllers/devise/sessions_controller.rb +7 -2
  16. data/app/controllers/devise/unlocks_controller.rb +3 -0
  17. data/app/controllers/devise_controller.rb +34 -18
  18. data/app/mailers/devise/mailer.rb +4 -0
  19. data/app/views/devise/confirmations/new.html.erb +1 -1
  20. data/app/views/devise/mailer/password_change.html.erb +3 -0
  21. data/app/views/devise/passwords/edit.html.erb +3 -0
  22. data/app/views/devise/registrations/new.html.erb +1 -1
  23. data/app/views/devise/shared/_links.html.erb +1 -1
  24. data/config/locales/en.yml +2 -0
  25. data/devise.gemspec +0 -2
  26. data/gemfiles/Gemfile.rails-3.2-stable.lock +52 -49
  27. data/gemfiles/Gemfile.rails-4.0-stable +1 -0
  28. data/gemfiles/Gemfile.rails-4.0-stable.lock +61 -60
  29. data/gemfiles/Gemfile.rails-4.1-stable +1 -0
  30. data/gemfiles/Gemfile.rails-4.1-stable.lock +66 -65
  31. data/gemfiles/Gemfile.rails-4.2-stable +30 -0
  32. data/gemfiles/Gemfile.rails-4.2-stable.lock +193 -0
  33. data/lib/devise/controllers/helpers.rb +12 -6
  34. data/lib/devise/controllers/rememberable.rb +9 -2
  35. data/lib/devise/controllers/sign_in_out.rb +2 -8
  36. data/lib/devise/controllers/store_location.rb +3 -1
  37. data/lib/devise/controllers/url_helpers.rb +7 -9
  38. data/lib/devise/encryptor.rb +22 -0
  39. data/lib/devise/failure_app.rb +48 -13
  40. data/lib/devise/hooks/timeoutable.rb +5 -7
  41. data/lib/devise/mapping.rb +1 -0
  42. data/lib/devise/models/authenticatable.rb +20 -26
  43. data/lib/devise/models/confirmable.rb +51 -17
  44. data/lib/devise/models/database_authenticatable.rb +17 -11
  45. data/lib/devise/models/lockable.rb +5 -1
  46. data/lib/devise/models/recoverable.rb +23 -15
  47. data/lib/devise/models/rememberable.rb +56 -22
  48. data/lib/devise/models/timeoutable.rb +0 -6
  49. data/lib/devise/models/trackable.rb +1 -2
  50. data/lib/devise/models/validatable.rb +3 -3
  51. data/lib/devise/models.rb +1 -1
  52. data/lib/devise/rails/routes.rb +27 -18
  53. data/lib/devise/rails.rb +1 -1
  54. data/lib/devise/strategies/authenticatable.rb +7 -4
  55. data/lib/devise/strategies/database_authenticatable.rb +1 -1
  56. data/lib/devise/strategies/rememberable.rb +13 -6
  57. data/lib/devise/test_helpers.rb +2 -2
  58. data/lib/devise/version.rb +1 -1
  59. data/lib/devise.rb +37 -36
  60. data/lib/generators/active_record/templates/migration.rb +1 -1
  61. data/lib/generators/active_record/templates/migration_existing.rb +1 -1
  62. data/lib/generators/devise/views_generator.rb +14 -3
  63. data/lib/generators/templates/controllers/README +2 -2
  64. data/lib/generators/templates/controllers/omniauth_callbacks_controller.rb +1 -1
  65. data/lib/generators/templates/controllers/registrations_controller.rb +2 -2
  66. data/lib/generators/templates/controllers/sessions_controller.rb +1 -1
  67. data/lib/generators/templates/devise.rb +17 -11
  68. data/lib/generators/templates/markerb/confirmation_instructions.markerb +1 -1
  69. data/lib/generators/templates/markerb/password_change.markerb +3 -0
  70. data/lib/generators/templates/markerb/reset_password_instructions.markerb +1 -1
  71. data/lib/generators/templates/markerb/unlock_instructions.markerb +1 -1
  72. data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +1 -1
  73. data/lib/generators/templates/simple_form_for/registrations/new.html.erb +1 -1
  74. data/test/controllers/custom_registrations_controller_test.rb +6 -1
  75. data/test/controllers/helper_methods_test.rb +21 -0
  76. data/test/controllers/helpers_test.rb +5 -0
  77. data/test/controllers/inherited_controller_i18n_messages_test.rb +51 -0
  78. data/test/controllers/internal_helpers_test.rb +4 -4
  79. data/test/controllers/load_hooks_controller_test.rb +19 -0
  80. data/test/controllers/passwords_controller_test.rb +1 -1
  81. data/test/controllers/sessions_controller_test.rb +3 -3
  82. data/test/devise_test.rb +3 -3
  83. data/test/failure_app_test.rb +40 -0
  84. data/test/generators/views_generator_test.rb +7 -0
  85. data/test/integration/database_authenticatable_test.rb +11 -0
  86. data/test/integration/omniauthable_test.rb +12 -10
  87. data/test/integration/recoverable_test.rb +13 -0
  88. data/test/integration/rememberable_test.rb +50 -3
  89. data/test/integration/timeoutable_test.rb +13 -18
  90. data/test/mailers/confirmation_instructions_test.rb +1 -1
  91. data/test/mapping_test.rb +6 -0
  92. data/test/models/confirmable_test.rb +93 -37
  93. data/test/models/database_authenticatable_test.rb +20 -0
  94. data/test/models/lockable_test.rb +29 -7
  95. data/test/models/recoverable_test.rb +62 -7
  96. data/test/models/rememberable_test.rb +68 -97
  97. data/test/models/validatable_test.rb +5 -5
  98. data/test/models_test.rb +15 -6
  99. data/test/rails_app/app/active_record/user_without_email.rb +8 -0
  100. data/test/rails_app/app/controllers/admins_controller.rb +0 -5
  101. data/test/rails_app/app/controllers/custom/registrations_controller.rb +10 -0
  102. data/test/rails_app/app/mongoid/user_without_email.rb +33 -0
  103. data/test/rails_app/config/application.rb +1 -1
  104. data/test/rails_app/config/environments/production.rb +6 -2
  105. data/test/rails_app/config/environments/test.rb +7 -2
  106. data/test/rails_app/config/initializers/devise.rb +12 -15
  107. data/test/rails_app/config/routes.rb +6 -3
  108. data/test/rails_app/lib/shared_user.rb +1 -1
  109. data/test/rails_app/lib/shared_user_without_email.rb +26 -0
  110. data/test/rails_test.rb +9 -0
  111. data/test/support/helpers.rb +4 -0
  112. data/test/support/integration.rb +2 -2
  113. data/test/test_helpers_test.rb +22 -7
  114. data/test/test_models.rb +2 -2
  115. data/test/time_helpers.rb +137 -0
  116. metadata +26 -4
@@ -23,6 +23,7 @@ class Devise::PasswordsController < DeviseController
23
23
  # GET /resource/password/edit?reset_password_token=abcdef
24
24
  def edit
25
25
  self.resource = resource_class.new
26
+ set_minimum_password_length
26
27
  resource.reset_password_token = params[:reset_password_token]
27
28
  end
28
29
 
@@ -33,18 +34,23 @@ class Devise::PasswordsController < DeviseController
33
34
 
34
35
  if resource.errors.empty?
35
36
  resource.unlock_access! if unlockable?(resource)
36
- flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
37
- set_flash_message(:notice, flash_message) if is_flashing_format?
38
- sign_in(resource_name, resource)
37
+ if Devise.sign_in_after_reset_password
38
+ flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
39
+ set_flash_message(:notice, flash_message) if is_flashing_format?
40
+ sign_in(resource_name, resource)
41
+ else
42
+ set_flash_message(:notice, :updated_not_active) if is_flashing_format?
43
+ end
39
44
  respond_with resource, location: after_resetting_password_path_for(resource)
40
45
  else
46
+ set_minimum_password_length
41
47
  respond_with resource
42
48
  end
43
49
  end
44
50
 
45
51
  protected
46
52
  def after_resetting_password_path_for(resource)
47
- after_sign_in_path_for(resource)
53
+ Devise.sign_in_after_reset_password ? after_sign_in_path_for(resource) : new_session_path(resource_name)
48
54
  end
49
55
 
50
56
  # The path used after sending reset password instructions
@@ -67,4 +73,8 @@ class Devise::PasswordsController < DeviseController
67
73
  resource.respond_to?(:unlock_strategy_enabled?) &&
68
74
  resource.unlock_strategy_enabled?(:email)
69
75
  end
76
+
77
+ def translation_scope
78
+ 'devise.passwords'
79
+ end
70
80
  end
@@ -1,14 +1,12 @@
1
1
  class Devise::RegistrationsController < DeviseController
2
- prepend_before_filter :require_no_authentication, only: [ :new, :create, :cancel ]
2
+ prepend_before_filter :require_no_authentication, only: [:new, :create, :cancel]
3
3
  prepend_before_filter :authenticate_scope!, only: [:edit, :update, :destroy]
4
4
 
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
+ set_minimum_password_length
9
+ yield resource if block_given?
12
10
  respond_with self.resource
13
11
  end
14
12
 
@@ -16,9 +14,9 @@ class Devise::RegistrationsController < DeviseController
16
14
  def create
17
15
  build_resource(sign_up_params)
18
16
 
19
- resource_saved = resource.save
17
+ resource.save
20
18
  yield resource if block_given?
21
- if resource_saved
19
+ if resource.persisted?
22
20
  if resource.active_for_authentication?
23
21
  set_flash_message :notice, :signed_up if is_flashing_format?
24
22
  sign_up(resource_name, resource)
@@ -30,10 +28,7 @@ class Devise::RegistrationsController < DeviseController
30
28
  end
31
29
  else
32
30
  clean_up_passwords resource
33
- @validatable = devise_mapping.validatable?
34
- if @validatable
35
- @minimum_password_length = resource_class.password_length.min
36
- end
31
+ set_minimum_password_length
37
32
  respond_with resource
38
33
  end
39
34
  end
@@ -145,4 +140,8 @@ class Devise::RegistrationsController < DeviseController
145
140
  def account_update_params
146
141
  devise_parameter_sanitizer.sanitize(:account_update)
147
142
  end
143
+
144
+ def translation_scope
145
+ 'devise.registrations'
146
+ end
148
147
  end
@@ -1,13 +1,14 @@
1
1
  class Devise::SessionsController < DeviseController
2
- prepend_before_filter :require_no_authentication, only: [ :new, :create ]
2
+ prepend_before_filter :require_no_authentication, only: [:new, :create]
3
3
  prepend_before_filter :allow_params_authentication!, only: :create
4
4
  prepend_before_filter :verify_signed_out_user, only: :destroy
5
- prepend_before_filter only: [ :create, :destroy ] { request.env["devise.skip_timeout"] = true }
5
+ prepend_before_filter only: [:create, :destroy] { request.env["devise.skip_timeout"] = true }
6
6
 
7
7
  # GET /resource/sign_in
8
8
  def new
9
9
  self.resource = resource_class.new(sign_in_params)
10
10
  clean_up_passwords(resource)
11
+ yield resource if block_given?
11
12
  respond_with(resource, serialize_options(resource))
12
13
  end
13
14
 
@@ -45,6 +46,10 @@ class Devise::SessionsController < DeviseController
45
46
  { scope: resource_name, recall: "#{controller_path}#new" }
46
47
  end
47
48
 
49
+ def translation_scope
50
+ 'devise.sessions'
51
+ end
52
+
48
53
  private
49
54
 
50
55
  # Check if there is no signed in user before doing the sign out.
@@ -43,4 +43,7 @@ class Devise::UnlocksController < DeviseController
43
43
  new_session_path(resource) if is_navigational_format?
44
44
  end
45
45
 
46
+ def translation_scope
47
+ 'devise.unlocks'
48
+ end
46
49
  end
@@ -6,12 +6,28 @@ 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
9
  helper_method(*helpers)
11
10
 
12
11
  prepend_before_filter :assert_is_devise_resource!
13
12
  respond_to :html if mimes_for_respond_to.empty?
14
13
 
14
+ # Override prefixes to consider the scoped view.
15
+ # Notice we need to check for the request due to a bug in
16
+ # Action Controller tests that forces _prefixes to be
17
+ # loaded before even having a request object.
18
+ #
19
+ # This method should be public as it is is in ActionPack
20
+ # itself. Changing its visibility may break other gems.
21
+ def _prefixes #:nodoc:
22
+ @_prefixes ||= if self.class.scoped_views? && request && devise_mapping
23
+ ["#{devise_mapping.scoped_path}/#{controller_name}"] + super
24
+ else
25
+ super
26
+ end
27
+ end
28
+
29
+ protected
30
+
15
31
  # Gets the actual resource stored in the instance variable
16
32
  def resource
17
33
  instance_variable_get(:"@#{resource_name}")
@@ -38,22 +54,6 @@ class DeviseController < Devise.parent_controller.constantize
38
54
  @devise_mapping ||= request.env["devise.mapping"]
39
55
  end
40
56
 
41
- # Override prefixes to consider the scoped view.
42
- # Notice we need to check for the request due to a bug in
43
- # Action Controller tests that forces _prefixes to be
44
- # loaded before even having a request object.
45
- def _prefixes #:nodoc:
46
- @_prefixes ||= if self.class.scoped_views? && request && devise_mapping
47
- ["#{devise_mapping.scoped_path}/#{controller_name}"] + super
48
- else
49
- super
50
- end
51
- end
52
-
53
- hide_action :_prefixes
54
-
55
- protected
56
-
57
57
  # Checks whether it's a devise mapped resource or not.
58
58
  def assert_is_devise_resource! #:nodoc:
59
59
  unknown_action! <<-MESSAGE unless devise_mapping
@@ -154,19 +154,33 @@ MESSAGE
154
154
  end
155
155
  end
156
156
 
157
+ # Sets minimum password length to show to user
158
+ def set_minimum_password_length
159
+ if devise_mapping.validatable?
160
+ @minimum_password_length = resource_class.password_length.min
161
+ end
162
+ end
163
+
157
164
  def devise_i18n_options(options)
158
165
  options
159
166
  end
160
167
 
161
168
  # Get message for given
162
169
  def find_message(kind, options = {})
163
- options[:scope] = "devise.#{controller_name}"
170
+ options[:scope] ||= translation_scope
164
171
  options[:default] = Array(options[:default]).unshift(kind.to_sym)
165
172
  options[:resource_name] = resource_name
166
173
  options = devise_i18n_options(options)
167
174
  I18n.t("#{options[:resource_name]}.#{kind}", options)
168
175
  end
169
176
 
177
+ # Controllers inheriting DeviseController are advised to override this
178
+ # method so that other controllers inheriting from them would use
179
+ # existing translations.
180
+ def translation_scope
181
+ "devise.#{controller_name}"
182
+ end
183
+
170
184
  def clean_up_passwords(object)
171
185
  object.clean_up_passwords if object.respond_to?(:clean_up_passwords)
172
186
  end
@@ -180,4 +194,6 @@ MESSAGE
180
194
  def resource_params
181
195
  params.fetch(resource_name, {})
182
196
  end
197
+
198
+ ActiveSupport.run_load_hooks(:devise_controller, self)
183
199
  end
@@ -16,5 +16,9 @@ if defined?(ActionMailer)
16
16
  @token = token
17
17
  devise_mail(record, :unlock_instructions, opts)
18
18
  end
19
+
20
+ def password_change(record, opts={})
21
+ devise_mail(record, :password_change, opts)
22
+ end
19
23
  end
20
24
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  <div class="field">
7
7
  <%= f.label :email %><br />
8
- <%= f.email_field :email, autofocus: true %>
8
+ <%= f.email_field :email, autofocus: true, value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email) %>
9
9
  </div>
10
10
 
11
11
  <div class="actions">
@@ -0,0 +1,3 @@
1
+ <p>Hello <%= @resource.email %>!</p>
2
+
3
+ <p>We're contacting you to notify you that your password has been changed.</p>
@@ -6,6 +6,9 @@
6
6
 
7
7
  <div class="field">
8
8
  <%= f.label :password, "New password" %><br />
9
+ <% if @minimum_password_length %>
10
+ <em>(<%= @minimum_password_length %> characters minimum)</em><br />
11
+ <% end %>
9
12
  <%= f.password_field :password, autofocus: true, autocomplete: "off" %>
10
13
  </div>
11
14
 
@@ -10,7 +10,7 @@
10
10
 
11
11
  <div class="field">
12
12
  <%= f.label :password %>
13
- <% if @validatable %>
13
+ <% if @minimum_password_length %>
14
14
  <em>(<%= @minimum_password_length %> characters minimum)</em>
15
15
  <% end %><br />
16
16
  <%= f.password_field :password, autocomplete: "off" %>
@@ -20,6 +20,6 @@
20
20
 
21
21
  <%- if devise_mapping.omniauthable? %>
22
22
  <%- resource_class.omniauth_providers.each do |provider| %>
23
- <%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %><br />
23
+ <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %><br />
24
24
  <% end -%>
25
25
  <% end -%>
@@ -23,6 +23,8 @@ en:
23
23
  subject: "Reset password instructions"
24
24
  unlock_instructions:
25
25
  subject: "Unlock instructions"
26
+ password_change:
27
+ subject: "Password Changed"
26
28
  omniauth_callbacks:
27
29
  failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
28
30
  success: "Successfully authenticated from %{kind} account."
data/devise.gemspec CHANGED
@@ -13,8 +13,6 @@ Gem::Specification.new do |s|
13
13
  s.description = "Flexible authentication solution for Rails with Warden"
14
14
  s.authors = ['José Valim', 'Carlos Antônio']
15
15
 
16
- s.rubyforge_project = "devise"
17
-
18
16
  s.files = `git ls-files`.split("\n")
19
17
  s.test_files = `git ls-files -- test/*`.split("\n")
20
18
  s.require_paths = ["lib"]
@@ -1,14 +1,14 @@
1
1
  GIT
2
2
  remote: git://github.com/rails/rails.git
3
- revision: 11fd052aa815ae0255ea5b2463e88138fb3fec61
3
+ revision: f85bbed4cdc1bdfd1e0dbd97bce9db81e44cbd11
4
4
  branch: 3-2-stable
5
5
  specs:
6
- actionmailer (3.2.19)
7
- actionpack (= 3.2.19)
6
+ actionmailer (3.2.22.2)
7
+ actionpack (= 3.2.22.2)
8
8
  mail (~> 2.5.4)
9
- actionpack (3.2.19)
10
- activemodel (= 3.2.19)
11
- activesupport (= 3.2.19)
9
+ actionpack (3.2.22.2)
10
+ activemodel (= 3.2.22.2)
11
+ activesupport (= 3.2.22.2)
12
12
  builder (~> 3.0.0)
13
13
  erubis (~> 2.7.0)
14
14
  journey (~> 1.0.4)
@@ -16,31 +16,31 @@ GIT
16
16
  rack-cache (~> 1.2)
17
17
  rack-test (~> 0.6.1)
18
18
  sprockets (~> 2.2.1)
19
- activemodel (3.2.19)
20
- activesupport (= 3.2.19)
19
+ activemodel (3.2.22.2)
20
+ activesupport (= 3.2.22.2)
21
21
  builder (~> 3.0.0)
22
- activerecord (3.2.19)
23
- activemodel (= 3.2.19)
24
- activesupport (= 3.2.19)
22
+ activerecord (3.2.22.2)
23
+ activemodel (= 3.2.22.2)
24
+ activesupport (= 3.2.22.2)
25
25
  arel (~> 3.0.2)
26
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)
27
+ activeresource (3.2.22.2)
28
+ activemodel (= 3.2.22.2)
29
+ activesupport (= 3.2.22.2)
30
+ activesupport (3.2.22.2)
31
31
  i18n (~> 0.6, >= 0.6.4)
32
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)
33
+ rails (3.2.22.2)
34
+ actionmailer (= 3.2.22.2)
35
+ actionpack (= 3.2.22.2)
36
+ activerecord (= 3.2.22.2)
37
+ activeresource (= 3.2.22.2)
38
+ activesupport (= 3.2.22.2)
39
39
  bundler (~> 1.0)
40
- railties (= 3.2.19)
41
- railties (3.2.19)
42
- actionpack (= 3.2.19)
43
- activesupport (= 3.2.19)
40
+ railties (= 3.2.22.2)
41
+ railties (3.2.22.2)
42
+ actionpack (= 3.2.22.2)
43
+ activesupport (= 3.2.22.2)
44
44
  rack-ssl (~> 1.3.2)
45
45
  rake (>= 0.8.7)
46
46
  rdoc (~> 3.4)
@@ -49,7 +49,7 @@ GIT
49
49
  PATH
50
50
  remote: ..
51
51
  specs:
52
- devise (3.4.1)
52
+ devise (3.5.8)
53
53
  bcrypt (~> 3.0)
54
54
  orm_adapter (~> 0.1)
55
55
  railties (>= 3.2.6, < 5)
@@ -61,36 +61,36 @@ GEM
61
61
  remote: https://rubygems.org/
62
62
  specs:
63
63
  arel (3.0.3)
64
- bcrypt (3.1.7)
64
+ bcrypt (3.1.11)
65
65
  builder (3.0.4)
66
66
  erubis (2.7.0)
67
- faraday (0.9.0)
67
+ faraday (0.9.2)
68
68
  multipart-post (>= 1.2, < 3)
69
- hashie (3.2.0)
69
+ hashie (3.4.3)
70
70
  hike (1.2.3)
71
- i18n (0.6.11)
71
+ i18n (0.7.0)
72
72
  journey (1.0.4)
73
- json (1.8.1)
74
- jwt (1.0.0)
73
+ json (1.8.3)
74
+ jwt (1.5.4)
75
75
  mail (2.5.4)
76
76
  mime-types (~> 1.16)
77
77
  treetop (~> 1.4.8)
78
78
  metaclass (0.0.4)
79
79
  mime-types (1.25.1)
80
- mini_portile (0.6.0)
80
+ mini_portile2 (2.0.0)
81
81
  mocha (1.1.0)
82
82
  metaclass (~> 0.0.1)
83
- mongoid (3.1.6)
83
+ mongoid (3.1.7)
84
84
  activemodel (~> 3.2)
85
85
  moped (~> 1.4)
86
86
  origin (~> 1.0)
87
87
  tzinfo (~> 0.3.29)
88
- moped (1.5.2)
89
- multi_json (1.10.1)
88
+ moped (1.5.3)
89
+ multi_json (1.11.3)
90
90
  multi_xml (0.5.5)
91
91
  multipart-post (2.0.0)
92
- nokogiri (1.6.3.1)
93
- mini_portile (= 0.6.0)
92
+ nokogiri (1.6.7.2)
93
+ mini_portile2 (~> 2.0.0.rc2)
94
94
  oauth2 (0.9.4)
95
95
  faraday (>= 0.8, < 0.10)
96
96
  jwt (~> 1.0)
@@ -113,36 +113,36 @@ GEM
113
113
  origin (1.1.0)
114
114
  orm_adapter (0.5.0)
115
115
  polyglot (0.3.5)
116
- rack (1.4.5)
117
- rack-cache (1.2)
116
+ rack (1.4.7)
117
+ rack-cache (1.6.1)
118
118
  rack (>= 0.4)
119
119
  rack-openid (1.3.1)
120
120
  rack (>= 1.1.0)
121
121
  ruby-openid (>= 2.1.8)
122
122
  rack-ssl (1.3.4)
123
123
  rack
124
- rack-test (0.6.2)
124
+ rack-test (0.6.3)
125
125
  rack (>= 1.0)
126
- rake (10.3.2)
126
+ rake (11.1.2)
127
127
  rdoc (3.12.2)
128
128
  json (~> 1.4)
129
- responders (1.1.1)
129
+ responders (1.1.2)
130
130
  railties (>= 3.2, < 4.2)
131
- ruby-openid (2.5.0)
132
- sprockets (2.2.2)
131
+ ruby-openid (2.7.0)
132
+ sprockets (2.2.3)
133
133
  hike (~> 1.2)
134
134
  multi_json (~> 1.0)
135
135
  rack (~> 1.0)
136
136
  tilt (~> 1.1, != 1.3.0)
137
- sqlite3 (1.3.9)
137
+ sqlite3 (1.3.11)
138
138
  thor (0.19.1)
139
- thread_safe (0.3.4)
139
+ thread_safe (0.3.5)
140
140
  tilt (1.4.1)
141
141
  treetop (1.4.15)
142
142
  polyglot
143
143
  polyglot (>= 0.3.1)
144
- tzinfo (0.3.41)
145
- warden (1.2.3)
144
+ tzinfo (0.3.49)
145
+ warden (1.2.6)
146
146
  rack (>= 1.0)
147
147
  webrat (0.7.3)
148
148
  nokogiri (>= 1.2.0)
@@ -167,3 +167,6 @@ DEPENDENCIES
167
167
  rdoc
168
168
  sqlite3
169
169
  webrat (= 0.7.3)
170
+
171
+ BUNDLED WITH
172
+ 1.11.2
@@ -6,6 +6,7 @@ gem "rails", github: 'rails/rails', branch: '4-0-stable'
6
6
  gem "omniauth", "~> 1.2.0"
7
7
  gem "omniauth-oauth2", "~> 1.1.0"
8
8
  gem "rdoc"
9
+ gem "mime-types", "~> 2.99"
9
10
 
10
11
  group :test do
11
12
  gem "omniauth-facebook"