app/controllers/hyrax/depositors_controller.rb in hyrax-1.1.1 vs app/controllers/hyrax/depositors_controller.rb in hyrax-2.0.0.beta1
- old
+ new
@@ -1,5 +1,45 @@
module Hyrax
class DepositorsController < ApplicationController
- include DepositorsControllerBehavior
+ 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"
+ ::User.batch_user.send_message(grantor, message_to_grantor, "Proxy Depositor Added")
+ ::User.batch_user.send_message(grantee, message_to_grantee, "Proxy Depositor Added")
+ end
end
end