devbootsrap 0.0.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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +31 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/app/controllers/devise/confirmations_controller.rb +47 -0
- data/app/controllers/devise/omniauth_callbacks_controller.rb +30 -0
- data/app/controllers/devise/passwords_controller.rb +70 -0
- data/app/controllers/devise/registrations_controller.rb +137 -0
- data/app/controllers/devise/sessions_controller.rb +53 -0
- data/app/controllers/devise/unlocks_controller.rb +46 -0
- data/app/controllers/devise_controller.rb +176 -0
- data/app/helpers/devise_helper.rb +25 -0
- data/app/mailers/devise/mailer.rb +20 -0
- data/app/views/devise/confirmations/new.html.erb +12 -0
- data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
- data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/devise/passwords/edit.html.erb +16 -0
- data/app/views/devise/passwords/new.html.erb +12 -0
- data/app/views/devise/registrations/edit.html.erb +29 -0
- data/app/views/devise/registrations/new.html.erb +18 -0
- data/app/views/devise/sessions/new.html.erb +17 -0
- data/app/views/devise/shared/_links.erb +25 -0
- data/app/views/devise/unlocks/new.html.erb +12 -0
- data/config/locales/en.yml +59 -0
- data/devbootsrap.gemspec +29 -0
- data/gemfiles/Gemfile.rails-3.2-stable +29 -0
- data/gemfiles/Gemfile.rails-4.0-stable +29 -0
- data/gemfiles/Gemfile.rails-head +29 -0
- data/lib/devbootsrap.rb +5 -0
- data/lib/devbootsrap/version.rb +3 -0
- data/lib/devise.rb +491 -0
- data/lib/devise/controllers/helpers.rb +213 -0
- data/lib/devise/controllers/rememberable.rb +47 -0
- data/lib/devise/controllers/scoped_views.rb +17 -0
- data/lib/devise/controllers/sign_in_out.rb +103 -0
- data/lib/devise/controllers/store_location.rb +50 -0
- data/lib/devise/controllers/url_helpers.rb +67 -0
- data/lib/devise/delegator.rb +16 -0
- data/lib/devise/failure_app.rb +205 -0
- data/lib/devise/hooks/activatable.rb +11 -0
- data/lib/devise/hooks/csrf_cleaner.rb +5 -0
- data/lib/devise/hooks/forgetable.rb +9 -0
- data/lib/devise/hooks/lockable.rb +7 -0
- data/lib/devise/hooks/proxy.rb +21 -0
- data/lib/devise/hooks/rememberable.rb +7 -0
- data/lib/devise/hooks/timeoutable.rb +28 -0
- data/lib/devise/hooks/trackable.rb +9 -0
- data/lib/devise/mailers/helpers.rb +90 -0
- data/lib/devise/mapping.rb +172 -0
- data/lib/devise/models.rb +119 -0
- data/lib/devise/models/authenticatable.rb +284 -0
- data/lib/devise/models/confirmable.rb +295 -0
- data/lib/devise/models/database_authenticatable.rb +164 -0
- data/lib/devise/models/lockable.rb +196 -0
- data/lib/devise/models/omniauthable.rb +27 -0
- data/lib/devise/models/recoverable.rb +131 -0
- data/lib/devise/models/registerable.rb +25 -0
- data/lib/devise/models/rememberable.rb +129 -0
- data/lib/devise/models/timeoutable.rb +49 -0
- data/lib/devise/models/trackable.rb +35 -0
- data/lib/devise/models/validatable.rb +66 -0
- data/lib/devise/modules.rb +28 -0
- data/lib/devise/omniauth.rb +28 -0
- data/lib/devise/omniauth/config.rb +45 -0
- data/lib/devise/omniauth/url_helpers.rb +18 -0
- data/lib/devise/orm/active_record.rb +3 -0
- data/lib/devise/orm/mongoid.rb +3 -0
- data/lib/devise/parameter_filter.rb +40 -0
- data/lib/devise/parameter_sanitizer.rb +99 -0
- data/lib/devise/rails.rb +56 -0
- data/lib/devise/rails/routes.rb +496 -0
- data/lib/devise/rails/warden_compat.rb +22 -0
- data/lib/devise/strategies/authenticatable.rb +167 -0
- data/lib/devise/strategies/base.rb +20 -0
- data/lib/devise/strategies/database_authenticatable.rb +23 -0
- data/lib/devise/strategies/rememberable.rb +55 -0
- data/lib/devise/test_helpers.rb +132 -0
- data/lib/devise/time_inflector.rb +14 -0
- data/lib/devise/token_generator.rb +70 -0
- data/lib/devise/version.rb +3 -0
- data/lib/generators/active_record/devise_generator.rb +73 -0
- data/lib/generators/active_record/templates/migration.rb +18 -0
- data/lib/generators/active_record/templates/migration_existing.rb +25 -0
- data/lib/generators/devise/devise_generator.rb +26 -0
- data/lib/generators/devise/install_generator.rb +29 -0
- data/lib/generators/devise/orm_helpers.rb +51 -0
- data/lib/generators/devise/views_generator.rb +135 -0
- data/lib/generators/mongoid/devise_generator.rb +55 -0
- data/lib/generators/templates/README +35 -0
- data/lib/generators/templates/devise.rb +260 -0
- data/lib/generators/templates/markerb/confirmation_instructions.markerb +5 -0
- data/lib/generators/templates/markerb/reset_password_instructions.markerb +8 -0
- data/lib/generators/templates/markerb/unlock_instructions.markerb +7 -0
- data/lib/generators/templates/simple_form_for/confirmations/new.html.erb +16 -0
- data/lib/generators/templates/simple_form_for/passwords/edit.html.erb +19 -0
- data/lib/generators/templates/simple_form_for/passwords/new.html.erb +15 -0
- data/lib/generators/templates/simple_form_for/registrations/edit.html.erb +27 -0
- data/lib/generators/templates/simple_form_for/registrations/new.html.erb +17 -0
- data/lib/generators/templates/simple_form_for/sessions/new.html.erb +15 -0
- data/lib/generators/templates/simple_form_for/unlocks/new.html.erb +16 -0
- data/test/controllers/custom_registrations_controller_test.rb +35 -0
- data/test/controllers/custom_strategy_test.rb +62 -0
- data/test/controllers/helpers_test.rb +276 -0
- data/test/controllers/internal_helpers_test.rb +123 -0
- data/test/controllers/passwords_controller_test.rb +31 -0
- data/test/controllers/sessions_controller_test.rb +103 -0
- data/test/controllers/url_helpers_test.rb +59 -0
- data/test/delegator_test.rb +19 -0
- data/test/devise_test.rb +94 -0
- data/test/failure_app_test.rb +232 -0
- data/test/generators/active_record_generator_test.rb +103 -0
- data/test/generators/devise_generator_test.rb +39 -0
- data/test/generators/install_generator_test.rb +13 -0
- data/test/generators/mongoid_generator_test.rb +23 -0
- data/test/generators/views_generator_test.rb +96 -0
- data/test/helpers/devise_helper_test.rb +51 -0
- data/test/integration/authenticatable_test.rb +713 -0
- data/test/integration/confirmable_test.rb +284 -0
- data/test/integration/database_authenticatable_test.rb +84 -0
- data/test/integration/http_authenticatable_test.rb +105 -0
- data/test/integration/lockable_test.rb +239 -0
- data/test/integration/omniauthable_test.rb +133 -0
- data/test/integration/recoverable_test.rb +334 -0
- data/test/integration/registerable_test.rb +349 -0
- data/test/integration/rememberable_test.rb +167 -0
- data/test/integration/timeoutable_test.rb +183 -0
- data/test/integration/trackable_test.rb +92 -0
- data/test/mailers/confirmation_instructions_test.rb +115 -0
- data/test/mailers/reset_password_instructions_test.rb +96 -0
- data/test/mailers/unlock_instructions_test.rb +91 -0
- data/test/mapping_test.rb +127 -0
- data/test/models/authenticatable_test.rb +13 -0
- data/test/models/confirmable_test.rb +454 -0
- data/test/models/database_authenticatable_test.rb +249 -0
- data/test/models/lockable_test.rb +316 -0
- data/test/models/omniauthable_test.rb +7 -0
- data/test/models/recoverable_test.rb +184 -0
- data/test/models/registerable_test.rb +7 -0
- data/test/models/rememberable_test.rb +183 -0
- data/test/models/serializable_test.rb +49 -0
- data/test/models/timeoutable_test.rb +51 -0
- data/test/models/trackable_test.rb +13 -0
- data/test/models/validatable_test.rb +127 -0
- data/test/models_test.rb +144 -0
- data/test/omniauth/config_test.rb +57 -0
- data/test/omniauth/url_helpers_test.rb +54 -0
- data/test/orm/active_record.rb +10 -0
- data/test/orm/mongoid.rb +13 -0
- data/test/parameter_sanitizer_test.rb +81 -0
- data/test/rails_app/Rakefile +6 -0
- data/test/rails_app/app/active_record/admin.rb +6 -0
- data/test/rails_app/app/active_record/shim.rb +2 -0
- data/test/rails_app/app/active_record/user.rb +6 -0
- data/test/rails_app/app/controllers/admins/sessions_controller.rb +6 -0
- data/test/rails_app/app/controllers/admins_controller.rb +11 -0
- data/test/rails_app/app/controllers/application_controller.rb +9 -0
- data/test/rails_app/app/controllers/custom/registrations_controller.rb +21 -0
- data/test/rails_app/app/controllers/home_controller.rb +25 -0
- data/test/rails_app/app/controllers/publisher/registrations_controller.rb +2 -0
- data/test/rails_app/app/controllers/publisher/sessions_controller.rb +2 -0
- data/test/rails_app/app/controllers/users/omniauth_callbacks_controller.rb +14 -0
- data/test/rails_app/app/controllers/users_controller.rb +31 -0
- data/test/rails_app/app/helpers/application_helper.rb +3 -0
- data/test/rails_app/app/mailers/users/mailer.rb +12 -0
- data/test/rails_app/app/mongoid/admin.rb +29 -0
- data/test/rails_app/app/mongoid/shim.rb +23 -0
- data/test/rails_app/app/mongoid/user.rb +39 -0
- data/test/rails_app/app/views/admins/index.html.erb +1 -0
- data/test/rails_app/app/views/admins/sessions/new.html.erb +2 -0
- data/test/rails_app/app/views/home/admin_dashboard.html.erb +1 -0
- data/test/rails_app/app/views/home/index.html.erb +1 -0
- data/test/rails_app/app/views/home/join.html.erb +1 -0
- data/test/rails_app/app/views/home/private.html.erb +1 -0
- data/test/rails_app/app/views/home/user_dashboard.html.erb +1 -0
- data/test/rails_app/app/views/layouts/application.html.erb +24 -0
- data/test/rails_app/app/views/users/edit_form.html.erb +1 -0
- data/test/rails_app/app/views/users/index.html.erb +1 -0
- data/test/rails_app/app/views/users/mailer/confirmation_instructions.erb +1 -0
- data/test/rails_app/app/views/users/sessions/new.html.erb +1 -0
- data/test/rails_app/bin/bundle +3 -0
- data/test/rails_app/bin/rails +4 -0
- data/test/rails_app/bin/rake +4 -0
- data/test/rails_app/config.ru +4 -0
- data/test/rails_app/config/application.rb +40 -0
- data/test/rails_app/config/boot.rb +14 -0
- data/test/rails_app/config/database.yml +18 -0
- data/test/rails_app/config/environment.rb +5 -0
- data/test/rails_app/config/environments/development.rb +30 -0
- data/test/rails_app/config/environments/production.rb +80 -0
- data/test/rails_app/config/environments/test.rb +36 -0
- data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_app/config/initializers/devise.rb +181 -0
- data/test/rails_app/config/initializers/inflections.rb +2 -0
- data/test/rails_app/config/initializers/secret_token.rb +8 -0
- data/test/rails_app/config/initializers/session_store.rb +1 -0
- data/test/rails_app/config/routes.rb +108 -0
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +71 -0
- data/test/rails_app/db/schema.rb +55 -0
- data/test/rails_app/lib/shared_admin.rb +17 -0
- data/test/rails_app/lib/shared_user.rb +29 -0
- data/test/rails_app/public/404.html +26 -0
- data/test/rails_app/public/422.html +26 -0
- data/test/rails_app/public/500.html +26 -0
- data/test/rails_app/public/favicon.ico +0 -0
- data/test/routes_test.rb +262 -0
- data/test/support/action_controller/record_identifier.rb +10 -0
- data/test/support/assertions.rb +40 -0
- data/test/support/helpers.rb +70 -0
- data/test/support/integration.rb +92 -0
- data/test/support/locale/en.yml +8 -0
- data/test/support/mongoid.yml +6 -0
- data/test/support/webrat/integrations/rails.rb +24 -0
- data/test/test_helper.rb +27 -0
- data/test/test_helpers_test.rb +173 -0
- data/test/test_models.rb +33 -0
- metadata +480 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: b546c5b0fed21e4497c59ec6ba484e41313be864
|
|
4
|
+
data.tar.gz: 6663447f3c73507cfd8f50be12774815643d70f9
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 3692340299e3150b36ad516cf85ea9f502ce16993fdd4739bdc7197d92ee63a4f2cc2ddbcc2eda654b03e150f86eac40e828b45dbf3a5b525d436694b59f863d
|
|
7
|
+
data.tar.gz: 33f34a407a96e3a0302d9d33a98f0ad44243e5d99c83fdf3cde22d4410440a5b9f7a88d4c7f6c6e7ad43fe4288174c46e2479cfbe5a0d2745158900a23cba51a
|
data/.gitignore
ADDED
data/Gemfile
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
# Specify your gem's dependencies in devbootsrap.gemspec
|
|
4
|
+
gemspec
|
|
5
|
+
|
|
6
|
+
gem "rails", "~> 4.0.0"
|
|
7
|
+
gem "omniauth", "~> 1.0.0"
|
|
8
|
+
gem "omniauth-oauth2", "~> 1.0.0"
|
|
9
|
+
gem "rdoc"
|
|
10
|
+
|
|
11
|
+
group :test do
|
|
12
|
+
gem "omniauth-facebook"
|
|
13
|
+
gem "omniauth-openid", "~> 1.0.1"
|
|
14
|
+
gem "webrat", "0.7.3", require: false
|
|
15
|
+
gem "mocha", "~> 1.0.0", require: false
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
platforms :jruby do
|
|
19
|
+
gem "activerecord-jdbc-adapter"
|
|
20
|
+
gem "activerecord-jdbcsqlite3-adapter"
|
|
21
|
+
gem "jruby-openssl"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
platforms :ruby do
|
|
25
|
+
gem "sqlite3"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
group :mongoid do
|
|
29
|
+
gem "mongoid", github: "mongoid/mongoid", branch: "master"
|
|
30
|
+
end
|
|
31
|
+
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2014 ratnakar
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Devbootsrap
|
|
2
|
+
|
|
3
|
+
TODO: Write a gem description
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Add this line to your application's Gemfile:
|
|
8
|
+
|
|
9
|
+
gem 'devbootsrap'
|
|
10
|
+
|
|
11
|
+
And then execute:
|
|
12
|
+
|
|
13
|
+
$ bundle
|
|
14
|
+
|
|
15
|
+
Or install it yourself as:
|
|
16
|
+
|
|
17
|
+
$ gem install devbootsrap
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
TODO: Write usage instructions here
|
|
22
|
+
|
|
23
|
+
## Contributing
|
|
24
|
+
|
|
25
|
+
1. Fork it
|
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class Devise::ConfirmationsController < DeviseController
|
|
2
|
+
# GET /resource/confirmation/new
|
|
3
|
+
def new
|
|
4
|
+
self.resource = resource_class.new
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# POST /resource/confirmation
|
|
8
|
+
def create
|
|
9
|
+
self.resource = resource_class.send_confirmation_instructions(resource_params)
|
|
10
|
+
yield resource if block_given?
|
|
11
|
+
|
|
12
|
+
if successfully_sent?(resource)
|
|
13
|
+
respond_with({}, location: after_resending_confirmation_instructions_path_for(resource_name))
|
|
14
|
+
else
|
|
15
|
+
respond_with(resource)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# GET /resource/confirmation?confirmation_token=abcdef
|
|
20
|
+
def show
|
|
21
|
+
self.resource = resource_class.confirm_by_token(params[:confirmation_token])
|
|
22
|
+
yield resource if block_given?
|
|
23
|
+
|
|
24
|
+
if resource.errors.empty?
|
|
25
|
+
set_flash_message(:notice, :confirmed) if is_flashing_format?
|
|
26
|
+
respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
|
|
27
|
+
else
|
|
28
|
+
respond_with_navigational(resource.errors, status: :unprocessable_entity){ render :new }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
protected
|
|
33
|
+
|
|
34
|
+
# The path used after resending confirmation instructions.
|
|
35
|
+
def after_resending_confirmation_instructions_path_for(resource_name)
|
|
36
|
+
new_session_path(resource_name) if is_navigational_format?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# The path used after confirmation.
|
|
40
|
+
def after_confirmation_path_for(resource_name, resource)
|
|
41
|
+
if signed_in?
|
|
42
|
+
signed_in_root_path(resource)
|
|
43
|
+
else
|
|
44
|
+
new_session_path(resource_name)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
class Devise::OmniauthCallbacksController < DeviseController
|
|
2
|
+
prepend_before_filter { request.env["devise.skip_timeout"] = true }
|
|
3
|
+
|
|
4
|
+
def passthru
|
|
5
|
+
render status: 404, text: "Not found. Authentication passthru."
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def failure
|
|
9
|
+
set_flash_message :alert, :failure, kind: OmniAuth::Utils.camelize(failed_strategy.name), reason: failure_message
|
|
10
|
+
redirect_to after_omniauth_failure_path_for(resource_name)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
protected
|
|
14
|
+
|
|
15
|
+
def failed_strategy
|
|
16
|
+
env["omniauth.error.strategy"]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def failure_message
|
|
20
|
+
exception = env["omniauth.error"]
|
|
21
|
+
error = exception.error_reason if exception.respond_to?(:error_reason)
|
|
22
|
+
error ||= exception.error if exception.respond_to?(:error)
|
|
23
|
+
error ||= env["omniauth.error.type"].to_s
|
|
24
|
+
error.to_s.humanize if error
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def after_omniauth_failure_path_for(scope)
|
|
28
|
+
new_session_path(scope)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
class Devise::PasswordsController < DeviseController
|
|
2
|
+
prepend_before_filter :require_no_authentication
|
|
3
|
+
# Render the #edit only if coming from a reset password email link
|
|
4
|
+
append_before_filter :assert_reset_token_passed, only: :edit
|
|
5
|
+
|
|
6
|
+
# GET /resource/password/new
|
|
7
|
+
def new
|
|
8
|
+
self.resource = resource_class.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# POST /resource/password
|
|
12
|
+
def create
|
|
13
|
+
self.resource = resource_class.send_reset_password_instructions(resource_params)
|
|
14
|
+
yield resource if block_given?
|
|
15
|
+
|
|
16
|
+
if successfully_sent?(resource)
|
|
17
|
+
respond_with({}, location: after_sending_reset_password_instructions_path_for(resource_name))
|
|
18
|
+
else
|
|
19
|
+
respond_with(resource)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# GET /resource/password/edit?reset_password_token=abcdef
|
|
24
|
+
def edit
|
|
25
|
+
self.resource = resource_class.new
|
|
26
|
+
resource.reset_password_token = params[:reset_password_token]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# PUT /resource/password
|
|
30
|
+
def update
|
|
31
|
+
self.resource = resource_class.reset_password_by_token(resource_params)
|
|
32
|
+
yield resource if block_given?
|
|
33
|
+
|
|
34
|
+
if resource.errors.empty?
|
|
35
|
+
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)
|
|
39
|
+
respond_with resource, location: after_resetting_password_path_for(resource)
|
|
40
|
+
else
|
|
41
|
+
respond_with resource
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
protected
|
|
46
|
+
def after_resetting_password_path_for(resource)
|
|
47
|
+
after_sign_in_path_for(resource)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# The path used after sending reset password instructions
|
|
51
|
+
def after_sending_reset_password_instructions_path_for(resource_name)
|
|
52
|
+
new_session_path(resource_name) if is_navigational_format?
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Check if a reset_password_token is provided in the request
|
|
56
|
+
def assert_reset_token_passed
|
|
57
|
+
if params[:reset_password_token].blank?
|
|
58
|
+
set_flash_message(:alert, :no_token)
|
|
59
|
+
redirect_to new_session_path(resource_name)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Check if proper Lockable module methods are present & unlock strategy
|
|
64
|
+
# allows to unlock resource on password reset
|
|
65
|
+
def unlockable?(resource)
|
|
66
|
+
resource.respond_to?(:unlock_access!) &&
|
|
67
|
+
resource.respond_to?(:unlock_strategy_enabled?) &&
|
|
68
|
+
resource.unlock_strategy_enabled?(:email)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
class Devise::RegistrationsController < DeviseController
|
|
2
|
+
prepend_before_filter :require_no_authentication, only: [ :new, :create, :cancel ]
|
|
3
|
+
prepend_before_filter :authenticate_scope!, only: [:edit, :update, :destroy]
|
|
4
|
+
|
|
5
|
+
# GET /resource/sign_up
|
|
6
|
+
def new
|
|
7
|
+
build_resource({})
|
|
8
|
+
respond_with self.resource
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# POST /resource
|
|
12
|
+
def create
|
|
13
|
+
build_resource(sign_up_params)
|
|
14
|
+
|
|
15
|
+
resource_saved = resource.save
|
|
16
|
+
yield resource if block_given?
|
|
17
|
+
if resource_saved
|
|
18
|
+
if resource.active_for_authentication?
|
|
19
|
+
set_flash_message :notice, :signed_up if is_flashing_format?
|
|
20
|
+
sign_up(resource_name, resource)
|
|
21
|
+
respond_with resource, location: after_sign_up_path_for(resource)
|
|
22
|
+
else
|
|
23
|
+
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format?
|
|
24
|
+
expire_data_after_sign_in!
|
|
25
|
+
respond_with resource, location: after_inactive_sign_up_path_for(resource)
|
|
26
|
+
end
|
|
27
|
+
else
|
|
28
|
+
clean_up_passwords resource
|
|
29
|
+
respond_with resource
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# GET /resource/edit
|
|
34
|
+
def edit
|
|
35
|
+
render :edit
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# PUT /resource
|
|
39
|
+
# We need to use a copy of the resource because we don't want to change
|
|
40
|
+
# the current user in place.
|
|
41
|
+
def update
|
|
42
|
+
self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
|
|
43
|
+
prev_unconfirmed_email = resource.unconfirmed_email if resource.respond_to?(:unconfirmed_email)
|
|
44
|
+
|
|
45
|
+
resource_updated = update_resource(resource, account_update_params)
|
|
46
|
+
yield resource if block_given?
|
|
47
|
+
if resource_updated
|
|
48
|
+
if is_flashing_format?
|
|
49
|
+
flash_key = update_needs_confirmation?(resource, prev_unconfirmed_email) ?
|
|
50
|
+
:update_needs_confirmation : :updated
|
|
51
|
+
set_flash_message :notice, flash_key
|
|
52
|
+
end
|
|
53
|
+
sign_in resource_name, resource, bypass: true
|
|
54
|
+
respond_with resource, location: after_update_path_for(resource)
|
|
55
|
+
else
|
|
56
|
+
clean_up_passwords resource
|
|
57
|
+
respond_with resource
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# DELETE /resource
|
|
62
|
+
def destroy
|
|
63
|
+
resource.destroy
|
|
64
|
+
Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
|
|
65
|
+
set_flash_message :notice, :destroyed if is_flashing_format?
|
|
66
|
+
yield resource if block_given?
|
|
67
|
+
respond_with_navigational(resource){ redirect_to after_sign_out_path_for(resource_name) }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# GET /resource/cancel
|
|
71
|
+
# Forces the session data which is usually expired after sign
|
|
72
|
+
# in to be expired now. This is useful if the user wants to
|
|
73
|
+
# cancel oauth signing in/up in the middle of the process,
|
|
74
|
+
# removing all OAuth session data.
|
|
75
|
+
def cancel
|
|
76
|
+
expire_data_after_sign_in!
|
|
77
|
+
redirect_to new_registration_path(resource_name)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
protected
|
|
81
|
+
|
|
82
|
+
def update_needs_confirmation?(resource, previous)
|
|
83
|
+
resource.respond_to?(:pending_reconfirmation?) &&
|
|
84
|
+
resource.pending_reconfirmation? &&
|
|
85
|
+
previous != resource.unconfirmed_email
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# By default we want to require a password checks on update.
|
|
89
|
+
# You can overwrite this method in your own RegistrationsController.
|
|
90
|
+
def update_resource(resource, params)
|
|
91
|
+
resource.update_with_password(params)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Build a devise resource passing in the session. Useful to move
|
|
95
|
+
# temporary session data to the newly created user.
|
|
96
|
+
def build_resource(hash=nil)
|
|
97
|
+
self.resource = resource_class.new_with_session(hash || {}, session)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Signs in a user on sign up. You can overwrite this method in your own
|
|
101
|
+
# RegistrationsController.
|
|
102
|
+
def sign_up(resource_name, resource)
|
|
103
|
+
sign_in(resource_name, resource)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# The path used after sign up. You need to overwrite this method
|
|
107
|
+
# in your own RegistrationsController.
|
|
108
|
+
def after_sign_up_path_for(resource)
|
|
109
|
+
after_sign_in_path_for(resource)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# The path used after sign up for inactive accounts. You need to overwrite
|
|
113
|
+
# this method in your own RegistrationsController.
|
|
114
|
+
def after_inactive_sign_up_path_for(resource)
|
|
115
|
+
respond_to?(:root_path) ? root_path : "/"
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# The default url to be used after updating a resource. You need to overwrite
|
|
119
|
+
# this method in your own RegistrationsController.
|
|
120
|
+
def after_update_path_for(resource)
|
|
121
|
+
signed_in_root_path(resource)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Authenticates the current scope and gets the current resource from the session.
|
|
125
|
+
def authenticate_scope!
|
|
126
|
+
send(:"authenticate_#{resource_name}!", force: true)
|
|
127
|
+
self.resource = send(:"current_#{resource_name}")
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def sign_up_params
|
|
131
|
+
devise_parameter_sanitizer.sanitize(:sign_up)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def account_update_params
|
|
135
|
+
devise_parameter_sanitizer.sanitize(:account_update)
|
|
136
|
+
end
|
|
137
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
class Devise::SessionsController < DeviseController
|
|
2
|
+
prepend_before_filter :require_no_authentication, only: [ :new, :create ]
|
|
3
|
+
prepend_before_filter :allow_params_authentication!, only: :create
|
|
4
|
+
prepend_before_filter only: [ :create, :destroy ] { request.env["devise.skip_timeout"] = true }
|
|
5
|
+
|
|
6
|
+
# GET /resource/sign_in
|
|
7
|
+
def new
|
|
8
|
+
self.resource = resource_class.new(sign_in_params)
|
|
9
|
+
clean_up_passwords(resource)
|
|
10
|
+
respond_with(resource, serialize_options(resource))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# POST /resource/sign_in
|
|
14
|
+
def create
|
|
15
|
+
self.resource = warden.authenticate!(auth_options)
|
|
16
|
+
set_flash_message(:notice, :signed_in) if is_flashing_format?
|
|
17
|
+
sign_in(resource_name, resource)
|
|
18
|
+
yield resource if block_given?
|
|
19
|
+
respond_with resource, location: after_sign_in_path_for(resource)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# DELETE /resource/sign_out
|
|
23
|
+
def destroy
|
|
24
|
+
redirect_path = after_sign_out_path_for(resource_name)
|
|
25
|
+
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
|
|
26
|
+
set_flash_message :notice, :signed_out if signed_out && is_flashing_format?
|
|
27
|
+
yield 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
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
protected
|
|
38
|
+
|
|
39
|
+
def sign_in_params
|
|
40
|
+
devise_parameter_sanitizer.sanitize(:sign_in)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def serialize_options(resource)
|
|
44
|
+
methods = resource_class.authentication_keys.dup
|
|
45
|
+
methods = methods.keys if methods.is_a?(Hash)
|
|
46
|
+
methods << :password if resource.respond_to?(:password)
|
|
47
|
+
{ methods: methods, only: [:password] }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def auth_options
|
|
51
|
+
{ scope: resource_name, recall: "#{controller_path}#new" }
|
|
52
|
+
end
|
|
53
|
+
end
|