Sha256: 0e6b414951ffcd1fc7fe8e8b774bbf84d5e8266328dd6931575e4dce8c90803b

Contents?: true

Size: 1.99 KB

Versions: 36

Compression:

Stored size: 1.99 KB

Contents

class Dorsale::CustomerVault::LinksController < ::Dorsale::CustomerVault::ApplicationController
  before_action :set_objects

  def index
    authorize @person, :read?
  end

  def new
    authorize @person, :update?

    @link ||= scope.new
  end

  def create
    authorize @person, :update?

    @link ||= scope.new(link_params_for_create)

    if @link.save
      flash[:notice] = t("messages.links.create_ok")
      redirect_to back_url
    else
      render :new
    end
  end

  def edit
    authorize @person, :update?
  end

  def update
    authorize @person, :update?

    if @link.update(link_params_for_update)
      flash[:notice] = t("messages.links.update_ok")
      redirect_to back_url
    else
      render :edit
    end
  end

  def destroy
    authorize @person, :update?

    if @link.destroy
      flash[:notice] = t("messages.links.delete_ok")
    else
      flash[:alert] = t("messages.links.delete_error")
    end

    redirect_to back_url
  end

  private

  def model
    ::Dorsale::CustomerVault::Link
  end

  def back_url
    customer_vault_person_links_path(@person)
  end

  def person_scope
    policy_scope(::Dorsale::CustomerVault::Person)
  end

  def set_objects
    set_people
    set_person
    set_link
  end

  def set_people
    @people ||= person_scope.all
  end

  def set_person
    @person ||= person_scope.find(params[:person_id])
  end

  def set_link
    return unless params.key?(:id)

    @link ||= scope.find(params[:id])

    if @person == @link.alice
      @link.person       = @link.alice
      @link.other_person = @link.bob
    end

    if @person == @link.bob
      @link.person       = @link.bob
      @link.other_person = @link.alice
    end
  end

  def permitted_params
    [
      :title,
    ]
  end

  def link_params
    params.fetch(:link, {}).permit(permitted_params)
  end

  def link_params_for_create
    link_params.merge(
      :alice  => @person,
      :bob_id => params.dig(:link, :bob_id),
    )
  end

  def link_params_for_update
    link_params
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
dorsale-4.0.0 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.20.0 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.19.1 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.19.0 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.18.0 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.17.0 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.16.0 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.15.0 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.11 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.10 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.9 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.8 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.7 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.6 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.5 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.4 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.3 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.2 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.1 app/controllers/dorsale/customer_vault/links_controller.rb
dorsale-3.14.0 app/controllers/dorsale/customer_vault/links_controller.rb