Sha256: 2ffdd8ee776281d0dce1a1236cf6a939d43605fc99d545796abd3bc5f70f5819

Contents?: true

Size: 1.63 KB

Versions: 25

Compression:

Stored size: 1.63 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 > (15.days.ago)
        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

25 entries across 25 versions & 1 rubygems

Version Path
decidim-core-0.29.1 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.28.4 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.27.9 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.29.0 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.28.3 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.27.8 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.29.0.rc4 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.29.0.rc3 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.29.0.rc2 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.29.0.rc1 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.28.2 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.27.7 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.28.1 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.27.6 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.28.0 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.27.5 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.28.0.rc5 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.28.0.rc4 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.27.4 app/controllers/decidim/newsletters_controller.rb
decidim-core-0.27.3 app/controllers/decidim/newsletters_controller.rb