feat: update controllers to create delete request
This commit is contained in:
@@ -5,23 +5,11 @@ module FacebookConcern
|
||||
|
||||
private
|
||||
|
||||
def mark_deleting(id)
|
||||
key = delete_key(id)
|
||||
::Redis::Alfred.set(key, true)
|
||||
end
|
||||
|
||||
def unset_deleting(id)
|
||||
key = delete_key(id)
|
||||
::Redis::Alfred.delete(key)
|
||||
end
|
||||
|
||||
def deleting?(id)
|
||||
key = delete_key(id)
|
||||
::Redis::Alfred.get(key).present?
|
||||
end
|
||||
|
||||
def delete_key(id)
|
||||
format(::Redis::Alfred::META_DELETE_PROCESSING, id: id)
|
||||
def deletion_processed?(code)
|
||||
request = DeleteRequest.find_by!(confirmation_code: code)
|
||||
request.completed?
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
false
|
||||
end
|
||||
|
||||
def parse_fb_signed_request(signed_request)
|
||||
|
||||
@@ -2,10 +2,10 @@ class Facebook::ConfirmController < ApplicationController
|
||||
include FacebookConcern
|
||||
|
||||
def show
|
||||
if deleting?(params[:id])
|
||||
render plain: 'Processing', status: :ok
|
||||
else
|
||||
if deletion_processed?(params[:id])
|
||||
render plain: 'Data Deleted Successfully', status: :ok
|
||||
else
|
||||
render plain: 'Processing. If there is an issue, please contact support', status: :ok
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6,15 +6,14 @@ class Facebook::DeleteController < ApplicationController
|
||||
payload = parse_fb_signed_request(signed_request)
|
||||
id_to_process = payload['user_id']
|
||||
|
||||
mark_deleting(id_to_process)
|
||||
::Channels::Facebook::RedactContactDataJob.perform_later(id_to_process)
|
||||
status_url = "#{app_url_base}/facebook/confirm/#{id_to_process}"
|
||||
delete_request = DeleteRequest.create(fb_id: id_to_process)
|
||||
status_url = "#{app_url_base}/facebook/confirm/#{delete_request.confirmation_code}"
|
||||
|
||||
# IMPORTANT: Do not change the response format below.
|
||||
# Facebook's Data Deletion Request system specifically expects responses in this format
|
||||
# with a 'url' for status confirmation and a 'confirmation_code' field.
|
||||
# See: https://developers.facebook.com/docs/development/create-an-app/app-dashboard/data-deletion-callback/#implementing
|
||||
render json: { url: status_url, confirmation_code: id_to_process }, status: :ok
|
||||
render json: { url: status_url, confirmation_code: delete_request.confirmation_code }, status: :ok
|
||||
rescue InvalidDigestError
|
||||
render json: { error: 'Invalid signature' }, status: :unprocessable_entity
|
||||
rescue StandardError => e
|
||||
|
||||
Reference in New Issue
Block a user