Sha256: 71d29de04d618a08b939fd4ec60fef9582ccf1eb281d66dbade2e63798d80af9

Contents?: true

Size: 1.6 KB

Versions: 21

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

require "zip"

module Decidim
  # The controller to handle the user's download_my_data page.
  class DataPortabilityController < Decidim::ApplicationController
    include Decidim::UserProfile

    def show
      enforce_permission_to :show, :user, current_user: current_user

      @account = form(AccountForm).from_model(current_user)
    end

    def export
      enforce_permission_to :export, :user, current_user: current_user

      DataPortabilityExportJob.perform_later(current_user, export_format)

      flash[:notice] = t("decidim.account.data_portability_export.notice")

      redirect_back(fallback_location: data_portability_path)
    end

    def download_file
      enforce_permission_to :download, :user, current_user: current_user

      if params[:token].present?
        file_reader = Decidim::DataPortabilityFileReader.new(current_user, params[:token])
        if file_reader.valid_token?
          file = File.open(file_reader.file_path)
          if File.exist?(file)
            send_file file, type: "application/zip", disposition: "attachment"
          else
            flash[:error] = t("decidim.account.data_portability_export.file_no_exists")
            redirect_to data_portability_path
          end
        else
          flash[:error] = t("decidim.account.data_portability_export.invalid_token")
          redirect_to data_portability_path
        end
      else
        flash[:error] = t("decidim.account.data_portability_export.no_token")
        redirect_to data_portability_path
      end
    end

    private

    def export_format
      "CSV"
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
decidim-core-0.20.1 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.20.0 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.19.1 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.18.1 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.19.0 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.17.2 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.18.0 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.17.1 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.16.1 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.17.0 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.16.0 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.15.2 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.15.1 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.15.0 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.14.4 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.14.3 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.14.2 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.14.1 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.13.1 app/controllers/decidim/data_portability_controller.rb
decidim-core-0.13.0 app/controllers/decidim/data_portability_controller.rb