Sha256: 325331df7d5c5ed89fbfc517b8c8aaca8ba7ff46cb8eb5729fd8508ad49f0ccc

Contents?: true

Size: 1.67 KB

Versions: 33

Compression:

Stored size: 1.67 KB

Contents

# frozen_string_literal: true

module Decidim
  module Devise
    # This controller customizes the behaviour of Devise::Invitiable.
    class InvitationsController < ::Devise::InvitationsController
      include Decidim::DeviseControllers
      include NeedsTosAccepted

      before_action :configure_permitted_parameters

      # We don't users to create invitations, so we just redirect them to the
      # homepage.
      def authenticate_inviter!
        redirect_to root_path
      end

      # Overwrite the method that returns the path after a user accepts an
      # invitation. Using the param `invite_redirect` we can redirect the user
      # to a custom path after it has accepted the invitation.
      def after_accept_path_for(resource)
        params[:invite_redirect] || after_sign_in_path_for(resource)
      end

      # When a managed user accepts the invitation is promoted to non-managed user.
      def accept_resource
        resource = resource_class.accept_invitation!(update_resource_params)

        if resource.valid? && resource.invitation_accepted?
          resource.update!(newsletter_notifications_at: Time.current) if update_resource_params[:newsletter_notifications]
          resource.update!(managed: false) if resource.managed?
          resource.update!(accepted_tos_version: resource.organization.tos_version)
          Decidim::Gamification.increment_score(resource.invited_by, :invitations) if resource.invited_by
        end

        resource
      end

      protected

      def configure_permitted_parameters
        devise_parameter_sanitizer.permit(:accept_invitation, keys: [:nickname, :tos_agreement, :newsletter_notifications])
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
decidim-core-0.26.3 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.26.2 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.26.1 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.26.0 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.26.0.rc2 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.26.0.rc1 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.25.2 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.25.1 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.25.0 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.25.0.rc4 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.25.0.rc3 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.25.0.rc2 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.25.0.rc1 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.24.3 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.23.6 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.24.2 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.23.5 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.24.1 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.24.0 app/controllers/decidim/devise/invitations_controller.rb
decidim-core-0.24.0.rc2 app/controllers/decidim/devise/invitations_controller.rb