From 2ef85a6d1912ae83dee6d38821258742ba84dba2 Mon Sep 17 00:00:00 2001 From: Petko Bordjukov Date: Sat, 15 Aug 2015 07:39:43 +0300 Subject: [PATCH] Sign in users as soon as they confirm their email --- app/controllers/confirmations_controller.rb | 14 ++++++++++++++ config/routes.rb | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 app/controllers/confirmations_controller.rb diff --git a/app/controllers/confirmations_controller.rb b/app/controllers/confirmations_controller.rb new file mode 100644 index 0000000..17a4feb --- /dev/null +++ b/app/controllers/confirmations_controller.rb @@ -0,0 +1,14 @@ +class ConfirmationsController < Devise::ConfirmationsController + def show + self.resource = resource_class.confirm_by_token(params[:confirmation_token]) + yield resource if block_given? + + if resource.errors.empty? + set_flash_message(:notice, :confirmed) if is_flashing_format? + sign_in(resource_name, resource) + respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) } + else + respond_with_navigational(resource.errors, status: :unprocessable_entity){ render :new } + end + end +end diff --git a/config/routes.rb b/config/routes.rb index f800744..a1641a6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,5 @@ Rails.application.routes.draw do - devise_for :users, controllers: {registrations: 'registrations'} + devise_for :users, controllers: {registrations: 'registrations', confirmations: 'confirmations'} scope module: :public do root to: 'home#index'