require 'devise/rails/routes' require 'devise/rails/warden_compat' module Devise class Engine < ::Rails::Engine config.devise = Devise # Initialize Warden and copy its configurations. config.app_middleware.use Warden::Manager do |config| Devise.warden_config = config end # Force routes to be loaded if we are doing any eager load. config.before_eager_load { |app| app.reload_routes! } initializer "devise.url_helpers" do Devise.include_helpers(Devise::Controllers) end initializer "devise.omniauth" do |app| Devise.omniauth_configs.each do |provider, config| app.middleware.use config.strategy_class, *config.args do |strategy| config.strategy = strategy end end if Devise.omniauth_configs.any? Devise.include_helpers(Devise::OmniAuth) end end initializer "devise.mongoid_version_warning" do if defined?(Mongoid) require 'mongoid/version' if Mongoid::VERSION.to_f < 2.1 puts "\n[DEVISE] Please note that Mongoid versions prior to 2.1 handle dirty model " \ "object attributes in such a way that the Devise `validatable` module will not apply " \ "its usual uniqueness and format validations for the email field. It is recommended " \ "that you upgrade to Mongoid 2.1+ for this and other fixes, but if for some reason you " \ "are unable to do so, you should add these validations manually.\n" end end end initializer "devise.fix_routes_proxy_missing_respond_to_bug" do # We can get rid of this once we support Rails > 3.2 ActionDispatch::Routing::RoutesProxy.class_eval do def respond_to?(method, include_private = false) super || routes.url_helpers.respond_to?(method) end end end initializer "devise.deprecations" do unless defined?(Rails::Generators) if Devise.case_insensitive_keys == false warn "\n[DEVISE] Devise.case_insensitive_keys is false which is no longer " \ "supported. If you want to continue running on this mode, please ensure " \ "you are not using validatable (you can copy the validations directly to your model) " \ "and set case_insensitive_keys to an empty array.\n" end if Devise.apply_schema && defined?(Mongoid) warn "\n[DEVISE] Devise.apply_schema is true. This means Devise was " \ "automatically configuring your DB. This no longer happens. You should " \ "set Devise.apply_schema to false and manually set the fields used by Devise as shown here: " \ "https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style\n" end # TODO: Deprecate the true value of this option as well if Devise.use_salt_as_remember_token == false warn "\n[DEVISE] Devise.use_salt_as_remember_token is false which is no longer " \ "supported. Devise now only uses the salt as remember token and the remember_token " \ "column can be removed from your models.\n" end if Devise.reset_password_within.nil? warn "\n[DEVISE] Devise.reset_password_within is nil. Please set this value to " \ "an interval (for example, 6.hours) and add a reset_password_sent_at field to " \ "your Devise models (if they don't have one already).\n" end end config.after_initialize do example = <<-YAML en: devise: registrations: 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.' signed_up_but_inactive: 'You have signed up successfully. However, we could not sign you in because your account is not yet activated.' signed_up_but_locked: 'You have signed up successfully. However, we could not sign you in because your account is locked.' YAML if I18n.t(:"devise.registrations.reasons", :default => {}).present? warn "\n[DEVISE] devise.registrations.reasons in yml files is deprecated, " \ "please use devise.registrations.signed_up_but_REASON instead. The default values are:\n\n#{example}\n" end if I18n.t(:"devise.registrations.inactive_signed_up", :default => "").present? warn "\n[DEVISE] devise.registrations.inactive_signed_up in yml files is deprecated, " \ "please use devise.registrations.signed_up_but_REASON instead. The default values are:\n\n#{example}\n" end end end end end