devise 1.3.4 → 1.4.1
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.
- data/.travis.yml +3 -2
- data/CHANGELOG.rdoc +29 -0
- data/Gemfile +10 -7
- data/Gemfile.lock +47 -47
- data/README.rdoc +2 -2
- data/Rakefile +1 -1
- data/app/controllers/devise/confirmations_controller.rb +2 -2
- data/app/controllers/devise/passwords_controller.rb +10 -2
- data/app/controllers/devise/registrations_controller.rb +6 -4
- data/app/controllers/devise/unlocks_controller.rb +2 -2
- data/app/helpers/devise_helper.rb +1 -1
- data/app/mailers/devise/mailer.rb +4 -77
- data/config/locales/en.yml +3 -0
- data/lib/devise.rb +45 -13
- data/lib/devise/controllers/helpers.rb +5 -2
- data/lib/devise/controllers/internal_helpers.rb +15 -1
- data/lib/devise/controllers/rememberable.rb +1 -1
- data/lib/devise/email.rb +23 -0
- data/lib/devise/hooks/forgetable.rb +1 -1
- data/lib/devise/hooks/trackable.rb +1 -1
- data/lib/devise/mailers/helpers.rb +84 -0
- data/lib/devise/mapping.rb +23 -7
- data/lib/devise/models/authenticatable.rb +14 -6
- data/lib/devise/models/database_authenticatable.rb +18 -1
- data/lib/devise/models/recoverable.rb +1 -1
- data/lib/devise/models/rememberable.rb +7 -5
- data/lib/devise/models/validatable.rb +5 -7
- data/lib/devise/modules.rb +1 -1
- data/lib/devise/omniauth.rb +0 -5
- data/lib/devise/omniauth/config.rb +6 -0
- data/lib/devise/rails/routes.rb +65 -10
- data/lib/devise/strategies/rememberable.rb +2 -7
- data/lib/devise/version.rb +1 -1
- data/lib/generators/devise/install_generator.rb +2 -2
- data/lib/generators/devise/simple_form_for/confirmations/new.html.erb +15 -0
- data/lib/generators/devise/simple_form_for/passwords/edit.html.erb +19 -0
- data/lib/generators/devise/simple_form_for/passwords/new.html.erb +15 -0
- data/lib/generators/devise/simple_form_for/registrations/edit.html.erb +22 -0
- data/lib/generators/devise/simple_form_for/registrations/new.html.erb +17 -0
- data/lib/generators/devise/simple_form_for/sessions/new.html.erb +15 -0
- data/lib/generators/devise/simple_form_for/unlocks/new.html.erb +15 -0
- data/lib/generators/devise/views_generator.rb +61 -9
- data/lib/generators/templates/devise.rb +13 -3
- data/test/controllers/internal_helpers_test.rb +9 -2
- data/test/generators/views_generator_test.rb +10 -0
- data/test/helpers/devise_helper_test.rb +43 -0
- data/test/integration/authenticatable_test.rb +74 -5
- data/test/integration/confirmable_test.rb +39 -1
- data/test/integration/database_authenticatable_test.rb +22 -0
- data/test/integration/http_authenticatable_test.rb +8 -0
- data/test/integration/lockable_test.rb +62 -4
- data/test/integration/omniauthable_test.rb +1 -3
- data/test/integration/recoverable_test.rb +66 -6
- data/test/integration/registerable_test.rb +1 -1
- data/test/integration/rememberable_test.rb +20 -1
- data/test/integration/trackable_test.rb +17 -0
- data/test/mapping_test.rb +5 -0
- data/test/models/database_authenticatable_test.rb +56 -1
- data/test/models/encryptable_test.rb +1 -1
- data/test/models/recoverable_test.rb +14 -3
- data/test/models/rememberable_test.rb +8 -0
- data/test/models/token_authenticatable_test.rb +0 -6
- data/test/models/validatable_test.rb +17 -4
- data/test/models_test.rb +4 -0
- data/test/omniauth/url_helpers_test.rb +4 -0
- data/test/rails_app/app/controllers/home_controller.rb +9 -0
- data/test/rails_app/app/controllers/users_controller.rb +6 -1
- data/test/rails_app/app/views/home/admin_dashboard.html.erb +1 -0
- data/test/rails_app/app/views/home/join.html.erb +1 -0
- data/test/rails_app/app/views/home/user_dashboard.html.erb +1 -0
- data/test/rails_app/config/initializers/devise.rb +6 -0
- data/test/rails_app/config/routes.rb +30 -2
- data/test/routes_test.rb +54 -0
- metadata +21 -4
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.rdoc
    CHANGED
    
    | @@ -1,3 +1,32 @@ | |
| 1 | 
            +
            == 1.4.1
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * enhancements
         | 
| 4 | 
            +
              * Add :defaults and :format support on router
         | 
| 5 | 
            +
              * Add simple form generators
         | 
| 6 | 
            +
              * Better localization for devise_error_messages! (by github.com/zedtux)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            * bug fix
         | 
| 9 | 
            +
              * Ensure to_xml is properly white listened
         | 
| 10 | 
            +
              * Ensure handle_unverified_request clean up any cached signed-in user
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            == 1.4.0
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            * enhancements
         | 
| 15 | 
            +
              * Added authenticated and unauthenticated to the router to route the used based on his status (by github.com/sj26)
         | 
| 16 | 
            +
              * Improve e-mail regexp (by github.com/rodrigoflores)
         | 
| 17 | 
            +
              * Add strip_whitespace_keys and default to e-mail (by github.com/swrobel)
         | 
| 18 | 
            +
              * Do not run format and uniqueness validations on e-mail if it hasn't changed (by github.com/Thibaut)
         | 
| 19 | 
            +
              * Added update_without_password to update models but not allowing the password to change (by github.com/fschwahn)
         | 
| 20 | 
            +
              * Added config.paranoid, check the generator for more information (by github.com/rodrigoflores)
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            * bug fix
         | 
| 23 | 
            +
              * password_required? should not affect length validation
         | 
| 24 | 
            +
              * User cannot access sign up and similar pages if he is already signed in through a cookie or token
         | 
| 25 | 
            +
              * Do not convert booleans to strings on finders (by github.com/xavier)
         | 
| 26 | 
            +
              * Run validations even if current_password fails (by github.com/crx)
         | 
| 27 | 
            +
              * Devise now honors routes constraints (by github.com/macmartine)
         | 
| 28 | 
            +
              * Do not return the user resource when requesting instructions (by github.com/rodrigoflores)
         | 
| 29 | 
            +
             | 
| 1 30 | 
             
            == 1.3.4
         | 
| 2 31 |  | 
| 3 32 | 
             
            * bug fix
         | 
    
        data/Gemfile
    CHANGED
    
    | @@ -2,7 +2,7 @@ source "http://rubygems.org" | |
| 2 2 |  | 
| 3 3 | 
             
            gemspec
         | 
| 4 4 |  | 
| 5 | 
            -
            gem "rails", "~> 3.0. | 
| 5 | 
            +
            gem "rails", "~> 3.0.7"
         | 
| 6 6 | 
             
            gem "oa-oauth", '~> 0.2.0', :require => "omniauth/oauth"
         | 
| 7 7 | 
             
            gem "oa-openid", '~> 0.2.0', :require => "omniauth/openid"
         | 
| 8 8 |  | 
| @@ -15,15 +15,18 @@ platforms :jruby do | |
| 15 15 | 
             
              gem 'activerecord-jdbcsqlite3-adapter'
         | 
| 16 16 | 
             
            end
         | 
| 17 17 |  | 
| 18 | 
            -
            platforms : | 
| 18 | 
            +
            platforms :mri_18 do
         | 
| 19 19 | 
             
              group :test do
         | 
| 20 | 
            -
                gem " | 
| 21 | 
            -
                gem "ruby-debug", ">= 0.10.3" if RUBY_VERSION < '1.9'
         | 
| 20 | 
            +
                gem "ruby-debug", ">= 0.10.3"
         | 
| 22 21 | 
             
              end
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            platforms :ruby do
         | 
| 25 | 
            +
              gem "sqlite3-ruby"
         | 
| 23 26 |  | 
| 24 27 | 
             
              group :mongoid do
         | 
| 25 | 
            -
                gem "mongo", "1. | 
| 26 | 
            -
                gem "mongoid", "2.0. | 
| 27 | 
            -
                gem "bson_ext", "1. | 
| 28 | 
            +
                gem "mongo", "~> 1.3.0"
         | 
| 29 | 
            +
                gem "mongoid", "2.0.1"
         | 
| 30 | 
            +
                gem "bson_ext", "~> 1.3.0"
         | 
| 28 31 | 
             
              end
         | 
| 29 32 | 
             
            end
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                devise (1. | 
| 4 | 
            +
                devise (1.4.0)
         | 
| 5 5 | 
             
                  bcrypt-ruby (~> 2.1.2)
         | 
| 6 6 | 
             
                  orm_adapter (~> 0.0.3)
         | 
| 7 7 | 
             
                  warden (~> 1.0.3)
         | 
| @@ -10,41 +10,41 @@ GEM | |
| 10 10 | 
             
              remote: http://rubygems.org/
         | 
| 11 11 | 
             
              specs:
         | 
| 12 12 | 
             
                abstract (1.0.0)
         | 
| 13 | 
            -
                actionmailer (3.0. | 
| 14 | 
            -
                  actionpack (= 3.0. | 
| 13 | 
            +
                actionmailer (3.0.7)
         | 
| 14 | 
            +
                  actionpack (= 3.0.7)
         | 
| 15 15 | 
             
                  mail (~> 2.2.15)
         | 
| 16 | 
            -
                actionpack (3.0. | 
| 17 | 
            -
                  activemodel (= 3.0. | 
| 18 | 
            -
                  activesupport (= 3.0. | 
| 16 | 
            +
                actionpack (3.0.7)
         | 
| 17 | 
            +
                  activemodel (= 3.0.7)
         | 
| 18 | 
            +
                  activesupport (= 3.0.7)
         | 
| 19 19 | 
             
                  builder (~> 2.1.2)
         | 
| 20 20 | 
             
                  erubis (~> 2.6.6)
         | 
| 21 | 
            -
                  i18n (~> 0. | 
| 21 | 
            +
                  i18n (~> 0.5.0)
         | 
| 22 22 | 
             
                  rack (~> 1.2.1)
         | 
| 23 | 
            -
                  rack-mount (~> 0.6. | 
| 23 | 
            +
                  rack-mount (~> 0.6.14)
         | 
| 24 24 | 
             
                  rack-test (~> 0.5.7)
         | 
| 25 25 | 
             
                  tzinfo (~> 0.3.23)
         | 
| 26 | 
            -
                activemodel (3.0. | 
| 27 | 
            -
                  activesupport (= 3.0. | 
| 26 | 
            +
                activemodel (3.0.7)
         | 
| 27 | 
            +
                  activesupport (= 3.0.7)
         | 
| 28 28 | 
             
                  builder (~> 2.1.2)
         | 
| 29 | 
            -
                  i18n (~> 0. | 
| 30 | 
            -
                activerecord (3.0. | 
| 31 | 
            -
                  activemodel (= 3.0. | 
| 32 | 
            -
                  activesupport (= 3.0. | 
| 29 | 
            +
                  i18n (~> 0.5.0)
         | 
| 30 | 
            +
                activerecord (3.0.7)
         | 
| 31 | 
            +
                  activemodel (= 3.0.7)
         | 
| 32 | 
            +
                  activesupport (= 3.0.7)
         | 
| 33 33 | 
             
                  arel (~> 2.0.2)
         | 
| 34 34 | 
             
                  tzinfo (~> 0.3.23)
         | 
| 35 35 | 
             
                activerecord-jdbc-adapter (1.1.1)
         | 
| 36 36 | 
             
                activerecord-jdbcsqlite3-adapter (1.1.1)
         | 
| 37 37 | 
             
                  activerecord-jdbc-adapter (= 1.1.1)
         | 
| 38 38 | 
             
                  jdbc-sqlite3 (~> 3.6.0)
         | 
| 39 | 
            -
                activeresource (3.0. | 
| 40 | 
            -
                  activemodel (= 3.0. | 
| 41 | 
            -
                  activesupport (= 3.0. | 
| 42 | 
            -
                activesupport (3.0. | 
| 39 | 
            +
                activeresource (3.0.7)
         | 
| 40 | 
            +
                  activemodel (= 3.0.7)
         | 
| 41 | 
            +
                  activesupport (= 3.0.7)
         | 
| 42 | 
            +
                activesupport (3.0.7)
         | 
| 43 43 | 
             
                addressable (2.2.4)
         | 
| 44 | 
            -
                arel (2.0. | 
| 44 | 
            +
                arel (2.0.9)
         | 
| 45 45 | 
             
                bcrypt-ruby (2.1.4)
         | 
| 46 | 
            -
                bson (1. | 
| 47 | 
            -
                bson_ext (1. | 
| 46 | 
            +
                bson (1.3.0)
         | 
| 47 | 
            +
                bson_ext (1.3.0)
         | 
| 48 48 | 
             
                builder (2.1.2)
         | 
| 49 49 | 
             
                columnize (0.3.2)
         | 
| 50 50 | 
             
                erubis (2.6.6)
         | 
| @@ -56,24 +56,24 @@ GEM | |
| 56 56 | 
             
                i18n (0.5.0)
         | 
| 57 57 | 
             
                jdbc-sqlite3 (3.6.14.2.056-java)
         | 
| 58 58 | 
             
                linecache (0.43)
         | 
| 59 | 
            -
                mail (2.2. | 
| 59 | 
            +
                mail (2.2.19)
         | 
| 60 60 | 
             
                  activesupport (>= 2.3.6)
         | 
| 61 61 | 
             
                  i18n (>= 0.4.0)
         | 
| 62 62 | 
             
                  mime-types (~> 1.16)
         | 
| 63 63 | 
             
                  treetop (~> 1.4.8)
         | 
| 64 64 | 
             
                mime-types (1.16)
         | 
| 65 65 | 
             
                mocha (0.9.12)
         | 
| 66 | 
            -
                mongo (1. | 
| 67 | 
            -
                  bson (>= 1. | 
| 68 | 
            -
                mongoid (2.0. | 
| 66 | 
            +
                mongo (1.3.0)
         | 
| 67 | 
            +
                  bson (>= 1.3.0)
         | 
| 68 | 
            +
                mongoid (2.0.1)
         | 
| 69 69 | 
             
                  activemodel (~> 3.0)
         | 
| 70 | 
            -
                  mongo (~> 1. | 
| 70 | 
            +
                  mongo (~> 1.3)
         | 
| 71 71 | 
             
                  tzinfo (~> 0.3.22)
         | 
| 72 72 | 
             
                  will_paginate (~> 3.0.pre)
         | 
| 73 73 | 
             
                multi_json (0.0.5)
         | 
| 74 74 | 
             
                multipart-post (1.1.0)
         | 
| 75 | 
            -
                nokogiri (1.4. | 
| 76 | 
            -
                nokogiri (1.4. | 
| 75 | 
            +
                nokogiri (1.4.3.1)
         | 
| 76 | 
            +
                nokogiri (1.4.3.1-java)
         | 
| 77 77 | 
             
                  weakling (>= 0.0.3)
         | 
| 78 78 | 
             
                oa-core (0.2.0)
         | 
| 79 79 | 
             
                  rack (~> 1.1)
         | 
| @@ -93,25 +93,25 @@ GEM | |
| 93 93 | 
             
                  multi_json (~> 0.0.4)
         | 
| 94 94 | 
             
                orm_adapter (0.0.4)
         | 
| 95 95 | 
             
                polyglot (0.3.1)
         | 
| 96 | 
            -
                rack (1.2. | 
| 97 | 
            -
                rack-mount (0.6. | 
| 96 | 
            +
                rack (1.2.2)
         | 
| 97 | 
            +
                rack-mount (0.6.14)
         | 
| 98 98 | 
             
                  rack (>= 1.0.0)
         | 
| 99 99 | 
             
                rack-openid (1.2.0)
         | 
| 100 100 | 
             
                  rack (>= 1.1.0)
         | 
| 101 101 | 
             
                  ruby-openid (>= 2.1.8)
         | 
| 102 102 | 
             
                rack-test (0.5.7)
         | 
| 103 103 | 
             
                  rack (>= 1.0)
         | 
| 104 | 
            -
                rails (3.0. | 
| 105 | 
            -
                  actionmailer (= 3.0. | 
| 106 | 
            -
                  actionpack (= 3.0. | 
| 107 | 
            -
                  activerecord (= 3.0. | 
| 108 | 
            -
                  activeresource (= 3.0. | 
| 109 | 
            -
                  activesupport (= 3.0. | 
| 104 | 
            +
                rails (3.0.7)
         | 
| 105 | 
            +
                  actionmailer (= 3.0.7)
         | 
| 106 | 
            +
                  actionpack (= 3.0.7)
         | 
| 107 | 
            +
                  activerecord (= 3.0.7)
         | 
| 108 | 
            +
                  activeresource (= 3.0.7)
         | 
| 109 | 
            +
                  activesupport (= 3.0.7)
         | 
| 110 110 | 
             
                  bundler (~> 1.0)
         | 
| 111 | 
            -
                  railties (= 3.0. | 
| 112 | 
            -
                railties (3.0. | 
| 113 | 
            -
                  actionpack (= 3.0. | 
| 114 | 
            -
                  activesupport (= 3.0. | 
| 111 | 
            +
                  railties (= 3.0.7)
         | 
| 112 | 
            +
                railties (3.0.7)
         | 
| 113 | 
            +
                  actionpack (= 3.0.7)
         | 
| 114 | 
            +
                  activesupport (= 3.0.7)
         | 
| 115 115 | 
             
                  rake (>= 0.8.7)
         | 
| 116 116 | 
             
                  thor (~> 0.14.4)
         | 
| 117 117 | 
             
                rake (0.8.7)
         | 
| @@ -129,9 +129,9 @@ GEM | |
| 129 129 | 
             
                thor (0.14.6)
         | 
| 130 130 | 
             
                treetop (1.4.9)
         | 
| 131 131 | 
             
                  polyglot (>= 0.3.1)
         | 
| 132 | 
            -
                tzinfo (0.3. | 
| 133 | 
            -
                warden (1.0. | 
| 134 | 
            -
                  rack (>= 1.0 | 
| 132 | 
            +
                tzinfo (0.3.27)
         | 
| 133 | 
            +
                warden (1.0.4)
         | 
| 134 | 
            +
                  rack (>= 1.0)
         | 
| 135 135 | 
             
                weakling (0.0.4-java)
         | 
| 136 136 | 
             
                webrat (0.7.2)
         | 
| 137 137 | 
             
                  nokogiri (>= 1.2.0)
         | 
| @@ -145,14 +145,14 @@ PLATFORMS | |
| 145 145 |  | 
| 146 146 | 
             
            DEPENDENCIES
         | 
| 147 147 | 
             
              activerecord-jdbcsqlite3-adapter
         | 
| 148 | 
            -
              bson_ext ( | 
| 148 | 
            +
              bson_ext (~> 1.3.0)
         | 
| 149 149 | 
             
              devise!
         | 
| 150 150 | 
             
              mocha
         | 
| 151 | 
            -
              mongo ( | 
| 152 | 
            -
              mongoid (= 2.0. | 
| 151 | 
            +
              mongo (~> 1.3.0)
         | 
| 152 | 
            +
              mongoid (= 2.0.1)
         | 
| 153 153 | 
             
              oa-oauth (~> 0.2.0)
         | 
| 154 154 | 
             
              oa-openid (~> 0.2.0)
         | 
| 155 | 
            -
              rails (~> 3.0. | 
| 155 | 
            +
              rails (~> 3.0.7)
         | 
| 156 156 | 
             
              ruby-debug (>= 0.10.3)
         | 
| 157 157 | 
             
              sqlite3-ruby
         | 
| 158 158 | 
             
              webrat (= 0.7.2)
         | 
    
        data/README.rdoc
    CHANGED
    
    | @@ -108,7 +108,7 @@ Devise must be set up within the model (or models) you want to use. Devise route | |
| 108 108 | 
             
            We're assuming here you want a User model with some Devise modules, as outlined below:
         | 
| 109 109 |  | 
| 110 110 | 
             
              class User < ActiveRecord::Base
         | 
| 111 | 
            -
                devise :database_authenticatable, :confirmable, :recoverable, :rememberable, :trackable, :validatable
         | 
| 111 | 
            +
                devise :database_authenticatable, :registerable, :confirmable, :recoverable, :rememberable, :trackable, :validatable
         | 
| 112 112 | 
             
              end
         | 
| 113 113 |  | 
| 114 114 | 
             
            After you choose which modules to use, you need to set up your migrations. Luckily, Devise has some helpers to save you from this boring work:
         | 
| @@ -174,7 +174,7 @@ Notice that if your devise model is not called "user" but "member", then the hel | |
| 174 174 |  | 
| 175 175 | 
             
            The devise method in your models also accepts some options to configure its modules. For example, you can choose which encryptor to use in database_authenticatable:
         | 
| 176 176 |  | 
| 177 | 
            -
              devise :database_authenticatable, :confirmable, :recoverable, :stretches => 20
         | 
| 177 | 
            +
              devise :database_authenticatable, :registerable, :confirmable, :recoverable, :stretches => 20
         | 
| 178 178 |  | 
| 179 179 | 
             
            Besides :stretches, you can define :pepper, :encryptor, :confirm_within, :remember_for, :timeout_in, :unlock_in and other values. For details, see the initializer file that was created when you invoked the "devise:install" generator described above.
         | 
| 180 180 |  | 
    
        data/Rakefile
    CHANGED
    
    
| @@ -11,9 +11,9 @@ class Devise::ConfirmationsController < ApplicationController | |
| 11 11 | 
             
              def create
         | 
| 12 12 | 
             
                self.resource = resource_class.send_confirmation_instructions(params[resource_name])
         | 
| 13 13 |  | 
| 14 | 
            -
                if resource | 
| 14 | 
            +
                if successful_and_sane?(resource)
         | 
| 15 15 | 
             
                  set_flash_message(:notice, :send_instructions) if is_navigational_format?
         | 
| 16 | 
            -
                  respond_with | 
| 16 | 
            +
                  respond_with({}, :location => after_resending_confirmation_instructions_path_for(resource_name))
         | 
| 17 17 | 
             
                else
         | 
| 18 18 | 
             
                  respond_with_navigational(resource){ render_with_scope :new }
         | 
| 19 19 | 
             
                end
         | 
| @@ -12,9 +12,9 @@ class Devise::PasswordsController < ApplicationController | |
| 12 12 | 
             
              def create
         | 
| 13 13 | 
             
                self.resource = resource_class.send_reset_password_instructions(params[resource_name])
         | 
| 14 14 |  | 
| 15 | 
            -
                if resource | 
| 15 | 
            +
                if successful_and_sane?(resource)
         | 
| 16 16 | 
             
                  set_flash_message(:notice, :send_instructions) if is_navigational_format?
         | 
| 17 | 
            -
                  respond_with | 
| 17 | 
            +
                  respond_with({}, :location => after_sending_reset_password_instructions_path_for(resource_name))
         | 
| 18 18 | 
             
                else
         | 
| 19 19 | 
             
                  respond_with_navigational(resource){ render_with_scope :new }
         | 
| 20 20 | 
             
                end
         | 
| @@ -39,4 +39,12 @@ class Devise::PasswordsController < ApplicationController | |
| 39 39 | 
             
                  respond_with_navigational(resource){ render_with_scope :edit }
         | 
| 40 40 | 
             
                end
         | 
| 41 41 | 
             
              end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              protected
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                # The path used after sending reset password instructions
         | 
| 46 | 
            +
                def after_sending_reset_password_instructions_path_for(resource_name)
         | 
| 47 | 
            +
                  new_session_path(resource_name)
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 42 50 | 
             
            end
         | 
| @@ -35,7 +35,11 @@ class Devise::RegistrationsController < ApplicationController | |
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| 37 37 | 
             
              # PUT /resource
         | 
| 38 | 
            +
              # We need to use a copy of the resource because we don't want to change
         | 
| 39 | 
            +
              # the current user in place.
         | 
| 38 40 | 
             
              def update
         | 
| 41 | 
            +
                self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
         | 
| 42 | 
            +
             | 
| 39 43 | 
             
                if resource.update_with_password(params[resource_name])
         | 
| 40 44 | 
             
                  set_flash_message :notice, :updated if is_navigational_format?
         | 
| 41 45 | 
             
                  sign_in resource_name, resource, :bypass => true
         | 
| @@ -102,11 +106,9 @@ class Devise::RegistrationsController < ApplicationController | |
| 102 106 | 
             
                  end
         | 
| 103 107 | 
             
                end
         | 
| 104 108 |  | 
| 105 | 
            -
                # Authenticates the current scope and gets  | 
| 106 | 
            -
                # We need to use a copy because we don't want actions like update changing
         | 
| 107 | 
            -
                # the current user in place.
         | 
| 109 | 
            +
                # Authenticates the current scope and gets the current resource from the session.
         | 
| 108 110 | 
             
                def authenticate_scope!
         | 
| 109 111 | 
             
                  send(:"authenticate_#{resource_name}!", true)
         | 
| 110 | 
            -
                  self.resource =  | 
| 112 | 
            +
                  self.resource = send(:"current_#{resource_name}")
         | 
| 111 113 | 
             
                end
         | 
| 112 114 | 
             
            end
         | 
| @@ -12,9 +12,9 @@ class Devise::UnlocksController < ApplicationController | |
| 12 12 | 
             
              def create
         | 
| 13 13 | 
             
                self.resource = resource_class.send_unlock_instructions(params[resource_name])
         | 
| 14 14 |  | 
| 15 | 
            -
                if resource | 
| 15 | 
            +
                if successful_and_sane?(resource)
         | 
| 16 16 | 
             
                  set_flash_message :notice, :send_instructions if is_navigational_format?
         | 
| 17 | 
            -
                  respond_with | 
| 17 | 
            +
                  respond_with({}, :location => new_session_path(resource_name))
         | 
| 18 18 | 
             
                else
         | 
| 19 19 | 
             
                  respond_with_navigational(resource){ render_with_scope :new }
         | 
| 20 20 | 
             
                end
         | 
| @@ -11,7 +11,7 @@ module DeviseHelper | |
| 11 11 | 
             
                messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
         | 
| 12 12 | 
             
                sentence = I18n.t("errors.messages.not_saved",
         | 
| 13 13 | 
             
                                  :count => resource.errors.count,
         | 
| 14 | 
            -
                                  :resource =>  | 
| 14 | 
            +
                                  :resource => resource.class.model_name.human.downcase)
         | 
| 15 15 |  | 
| 16 16 | 
             
                html = <<-HTML
         | 
| 17 17 | 
             
                <div id="error_explanation">
         | 
| @@ -1,88 +1,15 @@ | |
| 1 1 | 
             
            class Devise::Mailer < ::ActionMailer::Base
         | 
| 2 | 
            -
              include Devise:: | 
| 3 | 
            -
              attr_reader :scope_name, :resource
         | 
| 2 | 
            +
              include Devise::Mailers::Helpers
         | 
| 4 3 |  | 
| 5 4 | 
             
              def confirmation_instructions(record)
         | 
| 6 | 
            -
                 | 
| 5 | 
            +
                devise_mail(record, :confirmation_instructions)
         | 
| 7 6 | 
             
              end
         | 
| 8 7 |  | 
| 9 8 | 
             
              def reset_password_instructions(record)
         | 
| 10 | 
            -
                 | 
| 9 | 
            +
                devise_mail(record, :reset_password_instructions)
         | 
| 11 10 | 
             
              end
         | 
| 12 11 |  | 
| 13 12 | 
             
              def unlock_instructions(record)
         | 
| 14 | 
            -
                 | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
              private
         | 
| 18 | 
            -
             | 
| 19 | 
            -
              # Configure default email options
         | 
| 20 | 
            -
              def setup_mail(record, action)
         | 
| 21 | 
            -
                initialize_from_record(record)
         | 
| 22 | 
            -
                mail headers_for(action)
         | 
| 23 | 
            -
              end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
              def initialize_from_record(record)
         | 
| 26 | 
            -
                @scope_name = Devise::Mapping.find_scope!(record)
         | 
| 27 | 
            -
                @resource   = instance_variable_set("@#{devise_mapping.name}", record)
         | 
| 28 | 
            -
              end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
              def devise_mapping
         | 
| 31 | 
            -
                @devise_mapping ||= Devise.mappings[scope_name]
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
              def headers_for(action)
         | 
| 35 | 
            -
                headers = {
         | 
| 36 | 
            -
                  :subject       => translate(devise_mapping, action),
         | 
| 37 | 
            -
                  :from          => mailer_sender(devise_mapping),
         | 
| 38 | 
            -
                  :to            => resource.email,
         | 
| 39 | 
            -
                  :template_path => template_paths
         | 
| 40 | 
            -
                }
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                if resource.respond_to?(:headers_for)
         | 
| 43 | 
            -
                  headers.merge!(resource.headers_for(action))
         | 
| 44 | 
            -
                end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                unless headers.key?(:reply_to)
         | 
| 47 | 
            -
                  headers[:reply_to] = headers[:from]
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                headers
         | 
| 51 | 
            -
              end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
              def mailer_sender(mapping)
         | 
| 54 | 
            -
                if Devise.mailer_sender.is_a?(Proc)
         | 
| 55 | 
            -
                  Devise.mailer_sender.call(mapping.name)
         | 
| 56 | 
            -
                else
         | 
| 57 | 
            -
                  Devise.mailer_sender
         | 
| 58 | 
            -
                end
         | 
| 59 | 
            -
              end
         | 
| 60 | 
            -
             | 
| 61 | 
            -
              def template_paths
         | 
| 62 | 
            -
                template_path = [self.class.mailer_name]
         | 
| 63 | 
            -
                template_path.unshift "#{@devise_mapping.scoped_path}/mailer" if self.class.scoped_views?
         | 
| 64 | 
            -
                template_path
         | 
| 65 | 
            -
              end
         | 
| 66 | 
            -
             | 
| 67 | 
            -
              # Setup a subject doing an I18n lookup. At first, it attemps to set a subject
         | 
| 68 | 
            -
              # based on the current mapping:
         | 
| 69 | 
            -
              #
         | 
| 70 | 
            -
              #   en:
         | 
| 71 | 
            -
              #     devise:
         | 
| 72 | 
            -
              #       mailer:
         | 
| 73 | 
            -
              #         confirmation_instructions:
         | 
| 74 | 
            -
              #           user_subject: '...'
         | 
| 75 | 
            -
              #
         | 
| 76 | 
            -
              # If one does not exist, it fallbacks to ActionMailer default:
         | 
| 77 | 
            -
              #
         | 
| 78 | 
            -
              #   en:
         | 
| 79 | 
            -
              #     devise:
         | 
| 80 | 
            -
              #       mailer:
         | 
| 81 | 
            -
              #         confirmation_instructions:
         | 
| 82 | 
            -
              #           subject: '...'
         | 
| 83 | 
            -
              #
         | 
| 84 | 
            -
              def translate(mapping, key)
         | 
| 85 | 
            -
                I18n.t(:"#{mapping.name}_subject", :scope => [:devise, :mailer, key],
         | 
| 86 | 
            -
                  :default => [:subject, key.to_s.humanize])
         | 
| 13 | 
            +
                devise_mail(record, :unlock_instructions)
         | 
| 87 14 | 
             
              end
         | 
| 88 15 | 
             
            end
         |