Class: Decidim::Devise::ConfirmationsController
- Inherits:
-
Devise::ConfirmationsController
- Object
- Devise::ConfirmationsController
- Decidim::Devise::ConfirmationsController
- Defined in:
- app/controllers/decidim/devise/confirmations_controller.rb
Overview
Custom Devise ConfirmationsController to avoid namespace problems.
Instance Method Summary collapse
- #after_confirmation_path_for(resource_name, resource) ⇒ Object
- #create ⇒ Object
-
#resource_params ⇒ Object
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.
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) sign_in(resource) (resource) return decidim_verifications. if pending_onboarding_action?(resource) super end |
#create ⇒ Object
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_params ⇒ Object
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 |