Sha256: a8a7038659775f12d69cd235440ebd32c55783f81770806f25cd9b23000ce66e

Contents?: true

Size: 1.54 KB

Versions: 12

Compression:

Stored size: 1.54 KB

Contents

module Hyrax
  class DepositorsController < ApplicationController
    include DenyAccessOverrideBehavior

    before_action :authenticate_user!
    before_action :validate_users, only: :create

    def create
      grantor = authorize_and_return_grantor
      grantee = ::User.from_url_component(params[:grantee_id])
      if grantor.can_receive_deposits_from.include?(grantee)
        head :ok
      else
        grantor.can_receive_deposits_from << grantee
        send_proxy_depositor_added_messages(grantor, grantee)
        render json: { name: grantee.name, delete_path: hyrax.user_depositor_path(grantor.user_key, grantee.user_key) }
      end
    end

    def destroy
      grantor = authorize_and_return_grantor
      grantor.can_receive_deposits_from.delete(::User.from_url_component(params[:id]))
      head :ok
    end

    def validate_users
      head :ok if params[:user_id] == params[:grantee_id]
    end

    private

      def authorize_and_return_grantor
        grantor = ::User.from_url_component(params[:user_id])
        authorize! :edit, grantor
        grantor
      end

      def send_proxy_depositor_added_messages(grantor, grantee)
        message_to_grantee = "#{grantor.name} has assigned you as a proxy depositor"
        message_to_grantor = "You have assigned #{grantee.name} as a proxy depositor"
        Hyrax::MessengerService.deliver(::User.batch_user, grantor, message_to_grantor, "Proxy Depositor Added")
        Hyrax::MessengerService.deliver(::User.batch_user, grantee, message_to_grantee, "Proxy Depositor Added")
      end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
hyrax-2.0.3 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.2 app/controllers/hyrax/depositors_controller.rb
hyrax-2.1.0.beta1 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.1 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.0 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.0.rc3 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.0.rc2 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.0.rc1 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.0.beta5 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.0.beta4 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.0.beta3 app/controllers/hyrax/depositors_controller.rb
hyrax-2.0.0.beta2 app/controllers/hyrax/depositors_controller.rb