Class: Decidim::Devise::ConfirmationsController

Inherits:
Devise::ConfirmationsController
  • Object
show all
Includes:
Decidim::DeviseControllers, OnboardingActionMethods
Defined in:
app/controllers/decidim/devise/confirmations_controller.rb

Overview

Custom Devise ConfirmationsController to avoid namespace problems.

Instance Method Summary collapse

Instance Method Details

#after_confirmation_path_for(resource_name, resource) ⇒ Object



29
30
31
32
33
34
35
36
# File 'app/controllers/decidim/devise/confirmations_controller.rb', line 29

def after_confirmation_path_for(resource_name, resource)
  (resource)

  store_onboarding_cookie_data!(resource)
  return decidim_verifications.onboarding_pending_authorizations_path if pending_onboarding_action?(resource)

  super
end

#createObject



10
11
12
13
14
# File 'app/controllers/decidim/devise/confirmations_controller.rb', line 10

def create
  super do |resource|
    resource.errors.delete(:decidim_organization_id) if resource.errors.any?
  end
end

#resource_paramsObject

Since we are using a single Devise installation for multiple organizations, and user emails can be repeated across organizations, we need to identify the user by both the email and the organization. Setting the organization ID here will be used by Devise internally to find the correct user.

Note that in order for this to work we need to define the ‘confirmation_keys` Devise attribute in the `Decidim::User` model to include the `decidim_organization_id` attribute.



25
26
27
# File 'app/controllers/decidim/devise/confirmations_controller.rb', line 25

def resource_params
  super.merge(decidim_organization_id: current_organization.id)
end