Sha256: e7098c23f4840acef1decff5687ac69af7ced89666ffed7c30b5690a9f381ce5

Contents?: true

Size: 1.64 KB

Versions: 34

Compression:

Stored size: 1.64 KB

Contents

# frozen_string_literal: true

module Decidim
  # The controller to show the newsletter on the website.
  class NewslettersController < Decidim::ApplicationController
    layout "decidim/newsletter_base", only: [:show]

    helper Decidim::SanitizeHelper
    include Decidim::NewslettersHelper

    helper_method :newsletter

    def show
      @user = current_user
      @organization = current_organization

      raise ActionController::RoutingError, "Not Found" unless newsletter.sent?

      @encrypted_token = Decidim::NewsletterEncryptor.sent_at_encrypted(@user.id, newsletter.sent_at) if @user.present?
    end

    def unsubscribe
      encryptor = Decidim::NewsletterEncryptor

      decrypted_string = encryptor.sent_at_decrypted(params[:u])
      user = User.find_by(decidim_organization_id: current_organization.id, id: decrypted_string.split("-").first)
      sent_at_time = Time.zone.at(decrypted_string.split("-").second.to_i)

      if sent_at_time > (Time.current - 15.days)
        UnsubscribeSettings.call(user) do
          on(:ok) do
            flash.now[:notice] = t("newsletters.unsubscribe.success", scope: "decidim")
          end

          on(:invalid) do
            flash.now[:alert] = t("newsletters.unsubscribe.error", scope: "decidim")
            render action: :unsubscribe
          end
        end
      else
        flash.now[:alert] = t("newsletters.unsubscribe.token_error", scope: "decidim")
        render action: :unsubscribe
      end
    end

    def newsletter
      @newsletter ||= collection.find(params[:id])
    end

    private

    def collection
      Newsletter.where(organization: current_organization)
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
decidim-core-0.26.10 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.9 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.8 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.7 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.5 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.4 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.3 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.2 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.1 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.0 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.0.rc2 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.26.0.rc1 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.25.2 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.25.1 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.25.0 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.25.0.rc4 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.25.0.rc3 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.25.0.rc2 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.25.0.rc1 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.24.3 app/controllers/decidim/newsletters_controller.rb