diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc index e8c84be2..011c3f11 100644 --- a/CHANGELOG.rdoc +++ b/CHANGELOG.rdoc @@ -1,3 +1,7 @@ +* enhancements + * [#35] Moved friendly_token to Devise + * Added Devise.all, so you can freeze your app strategies + == 0.5.2 * enhancements diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index f0bb3185..9bc40f7b 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -5,8 +5,8 @@ class SessionsController < ApplicationController # GET /resource/sign_in def new - Devise::FLASH_MESSAGES.each do |message, type| - set_now_flash_message type, message if params.key?(message) + Devise::FLASH_MESSAGES.each do |message| + set_now_flash_message :failure, message if params.try(:[], message) == "true" end build_resource end diff --git a/generators/devise_install/devise_install_generator.rb b/generators/devise_install/devise_install_generator.rb index 0f5c13ca..890d7c27 100644 --- a/generators/devise_install/devise_install_generator.rb +++ b/generators/devise_install/devise_install_generator.rb @@ -2,7 +2,7 @@ class DeviseInstallGenerator < Rails::Generator::Base def manifest record do |m| - m.file "devise.rb", "config/initializers/devise.rb" + m.template "devise.rb", "config/initializers/devise.rb" end end diff --git a/generators/devise_install/templates/devise.rb b/generators/devise_install/templates/devise.rb index 5b0ad634..79d6bbbf 100644 --- a/generators/devise_install/templates/devise.rb +++ b/generators/devise_install/templates/devise.rb @@ -1,6 +1,11 @@ # Use this hook to configure devise mailer, warden hooks and so forth. The first # four configuration values can also be set straight in your models. Devise.setup do |config| + # Configure the frameworks used by default. You should always set this value + # because if Devise add a new strategy, it won't be added to your application + # by default, unless you configure it here. + config.all = <%= Devise::ALL.inspect %> + # Invoke `rake secret` and use the printed value to setup a pepper to generate # the encrypted password. By default no pepper is used. # config.pepper = "rake secret output" diff --git a/lib/devise.rb b/lib/devise.rb index 0992090d..db3338b1 100644 --- a/lib/devise.rb +++ b/lib/devise.rb @@ -12,12 +12,9 @@ module Devise SERIALIZERS = [:authenticatable, :rememberable].freeze TRUE_VALUES = [true, 1, '1', 't', 'T', 'true', 'TRUE'].freeze - # Maps the messages types that comes from warden to a flash type. - # This hash is not frozen, so you can add your messages as well. - FLASH_MESSAGES = { - :unauthenticated => :success, - :unconfirmed => :failure - } + # Maps the messages types that are used in flash message. This array is not + # frozen, so you can add messages from your own strategies. + FLASH_MESSAGES = [ :unauthenticated, :unconfirmed, :invalid ] # Declare encryptors length which are used in migrations. ENCRYPTORS_LENGTH = { @@ -67,6 +64,10 @@ module Devise mattr_accessor :orm @@orm = :active_record + # Configure default options used in :all + mattr_accessor :all + @@all = Devise::ALL.dup + class << self # Default way to setup Devise. Run script/generate devise_install to create # a fresh initializer with all configuration values. @@ -74,11 +75,6 @@ module Devise yield self end - def mail_sender=(value) #:nodoc: - ActiveSupport::Deprecation.warn "Devise.mail_sender= is deprecated, use Devise.mailer_sender instead" - DeviseMailer.sender = value - end - # Sets the sender in DeviseMailer. def mailer_sender=(value) DeviseMailer.sender = value @@ -122,6 +118,11 @@ module Devise def orm_class Devise::Orm.const_get(@@orm.to_s.camelize.to_sym) end + + # Generate a friendly string randomically to be used as token. + def friendly_token + ActiveSupport::SecureRandom.base64(15).tr('+/=', '-_ ').strip.delete("\n") + end end end diff --git a/lib/devise/models.rb b/lib/devise/models.rb index 241b3474..5daf196c 100644 --- a/lib/devise/models.rb +++ b/lib/devise/models.rb @@ -83,7 +83,7 @@ module Devise def devise(*modules) options = modules.extract_options! - modules = Devise::ALL if modules.include?(:all) + modules = Devise.all if modules.include?(:all) modules -= Array(options.delete(:except)) modules = [:authenticatable] | modules diff --git a/lib/devise/models/authenticatable.rb b/lib/devise/models/authenticatable.rb index 078e0c2a..9354a7c7 100644 --- a/lib/devise/models/authenticatable.rb +++ b/lib/devise/models/authenticatable.rb @@ -42,7 +42,7 @@ module Devise # setted. def password=(new_password) @password = new_password - self.password_salt = friendly_token + self.password_salt = Devise.friendly_token self.encrypted_password = password_digest(@password) end @@ -53,16 +53,11 @@ module Devise end protected - + # Digests the password using the configured encryptor def password_digest(password) encryptor.digest(password, stretches, password_salt, pepper) end - - # Generate a friendly string randomically to be used as token. - def friendly_token - ActiveSupport::SecureRandom.base64(15).tr('+/=', '-_ ').strip.delete("\n") - end module ClassMethods # Authenticate a user based on email and password. Returns the diff --git a/lib/devise/models/confirmable.rb b/lib/devise/models/confirmable.rb index a2e31c75..3f78d857 100644 --- a/lib/devise/models/confirmable.rb +++ b/lib/devise/models/confirmable.rb @@ -119,7 +119,7 @@ module Devise # this token is being generated def generate_confirmation_token self.confirmed_at = nil - self.confirmation_token = friendly_token + self.confirmation_token = Devise.friendly_token self.confirmation_sent_at = Time.now.utc end diff --git a/lib/devise/models/recoverable.rb b/lib/devise/models/recoverable.rb index 4c6c5db3..39947b93 100644 --- a/lib/devise/models/recoverable.rb +++ b/lib/devise/models/recoverable.rb @@ -42,7 +42,7 @@ module Devise # Generates a new random token for reset password def generate_reset_password_token - self.reset_password_token = friendly_token + self.reset_password_token = Devise.friendly_token end # Resets the reset password token with and save the record without diff --git a/lib/devise/models/rememberable.rb b/lib/devise/models/rememberable.rb index 9e92b8a1..81565f8d 100644 --- a/lib/devise/models/rememberable.rb +++ b/lib/devise/models/rememberable.rb @@ -43,7 +43,7 @@ module Devise # Generate a new remember token and save the record without validations. def remember_me! - self.remember_token = friendly_token + self.remember_token = Devise.friendly_token self.remember_created_at = Time.now.utc save(false) end