app/controllers/spotlight/roles_controller.rb in blacklight-spotlight-0.11.0 vs app/controllers/spotlight/roles_controller.rb in blacklight-spotlight-0.12.0
- old
+ new
@@ -28,13 +28,42 @@
flash[:alert] = t(:'helpers.submit.role.batch_error')
render action: 'index'
end
end
+ def exists
+ # note: the messages returned are not shown to users and really only useful for debug, hence no translation necessary
+ # app uses html status code to act on response
+ if ::User.where(email: exists_params).present?
+ render json: { message: 'User exists' }
+ else
+ render json: { message: 'User does not exist' }, status: :not_found
+ end
+ end
+
+ def invite
+ user = ::User.invite!(email: invite_params[:user], skip_invitation: true) # don't deliver the invitation yet
+ role = Spotlight::Role.create(exhibit: current_exhibit, user: user, role: invite_params[:role])
+ if role.save
+ user.deliver_invitation # now deliver it when we have saved the role
+ redirect_to :back, notice: t(:'helpers.submit.role.updated')
+ else
+ redirect_to :back, alert: t(:'helpers.submit.role.batch_error')
+ end
+ end
+
protected
def exhibit_params
params.require(:exhibit).permit(roles_attributes: [:id, :user_key, :role, :_destroy])
+ end
+
+ def invite_params
+ params.permit(:user, :role)
+ end
+
+ def exists_params
+ params.require(:user)
end
# When nested attributes are passed in, ensure we have authorization to update each row.
# @param attr [Hash,Array] the nested attributes
# @param klass [Class] the class that is getting created