diff --git a/frappe/templates/emails/account_deletion_notification.html b/frappe/templates/emails/account_deletion_notification.html new file mode 100644 index 0000000000..17d6aa3c93 --- /dev/null +++ b/frappe/templates/emails/account_deletion_notification.html @@ -0,0 +1,3 @@ +
{{_("Dear User,")}}
+{{_("As per your request, your account and data on {0} associated with email {1} has been permanently deleted").format(app_name, email)}}.
+ diff --git a/frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py b/frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py index 8a72fa269f..c3e0d22063 100644 --- a/frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py +++ b/frappe/website/doctype/personal_data_deletion_request/personal_data_deletion_request.py @@ -75,7 +75,7 @@ class PersonalDataDeletionRequest(Document): frappe.sendmail( recipients=self.email, - subject=_("Confirm Deletion of Data"), + subject=_("Confirm Deletion of Account"), template="delete_data_confirmation", args={ "email": self.email, @@ -83,7 +83,7 @@ class PersonalDataDeletionRequest(Document): "host_name": frappe.local.site, "link": url, }, - header=[_("Confirm Deletion of Data"), "green"], + header=[_("Confirm Deletion of Account"), "green"], ) def notify_system_managers(self): @@ -109,6 +109,7 @@ class PersonalDataDeletionRequest(Document): self.validate_data_anonymization() self.disable_user() self.anonymize_data() + self.notify_user_after_deletion() def anonymize_data(self): return frappe.enqueue_doc( @@ -120,6 +121,18 @@ class PersonalDataDeletionRequest(Document): now=frappe.flags.in_test, ) + def notify_user_after_deletion(self): + frappe.sendmail( + recipients=self.email, + subject=_("Your account has been deleted"), + template="account_deletion_notification", + args={ + "email": self.email, + "app_name": frappe.db.get_single_value("Website Settings", "app_name"), + }, + header=[_("Your account has been deleted"), "green"], + ) + def add_deletion_steps(self): if self.deletion_steps: return diff --git a/frappe/website/doctype/website_settings/website_settings.json b/frappe/website/doctype/website_settings/website_settings.json index 48f097e525..f39147d555 100644 --- a/frappe/website/doctype/website_settings/website_settings.json +++ b/frappe/website/doctype/website_settings/website_settings.json @@ -63,7 +63,10 @@ "subdomain", "head_html", "robots_txt", - "route_redirects" + "route_redirects", + "account_deletion_settings_section", + "show_account_deletion_link", + "account_deletion_sla" ], "fields": [ { @@ -386,6 +389,22 @@ "fieldname": "app_logo", "fieldtype": "Attach Image", "label": "App Logo" + }, + { + "fieldname": "account_deletion_settings_section", + "fieldtype": "Section Break", + "label": "Account Deletion Settings" + }, + { + "fieldname": "account_deletion_sla", + "fieldtype": "Int", + "label": "Account Deletion SLA (Days)" + }, + { + "default": "0", + "fieldname": "show_account_deletion_link", + "fieldtype": "Check", + "label": "Show Account Deletion Link in My Account Page" } ], "icon": "fa fa-cog", @@ -394,7 +413,7 @@ "issingle": 1, "links": [], "max_attachments": 10, - "modified": "2021-08-23 21:39:51.702248", + "modified": "2021-12-01 10:15:17.403155", "modified_by": "Administrator", "module": "Website", "name": "Website Settings", @@ -418,4 +437,4 @@ "sort_field": "modified", "sort_order": "ASC", "track_changes": 1 -} +} \ No newline at end of file diff --git a/frappe/website/doctype/website_settings/website_settings.py b/frappe/website/doctype/website_settings/website_settings.py index 7a744eaf53..02eed9cc6d 100644 --- a/frappe/website/doctype/website_settings/website_settings.py +++ b/frappe/website/doctype/website_settings/website_settings.py @@ -177,3 +177,7 @@ def get_items(parentfield): t['child_items'].append(d) break return top_items + +@frappe.whitelist(allow_guest=True) +def get_account_deletion_sla(): + return frappe.db.get_single_value("Website Settings", "account_deletion_sla") diff --git a/frappe/website/web_form/request_to_delete_data/request_to_delete_data.js b/frappe/website/web_form/request_to_delete_data/request_to_delete_data.js index 7da3f1fb41..9d19e36a05 100644 --- a/frappe/website/web_form/request_to_delete_data/request_to_delete_data.js +++ b/frappe/website/web_form/request_to_delete_data/request_to_delete_data.js @@ -1,3 +1,14 @@ frappe.ready(function() { - // bind events here -}); \ No newline at end of file + frappe.web_form.after_load = () => { + frappe.call({ + method: "frappe.website.doctype.website_settings.website_settings.get_account_deletion_sla", + callback: (data) => { + if (data.message) { + const intro_wrapper = $('#introduction .ql-editor.read-mode'); + const sla_description = `Send a request to delete your personally identifiable information (PII) that is stored on our system. You will receive an email to verify your request. Once the request is verified we will take care of deleting your PII. If you just want to check what PII we have stored, you can request your data.
Send a request to delete your account and personally identifiable information (PII) that is stored on our system. You will receive an email to verify your request. Once the request is verified we will take care of deleting your PII. If you just want to check what PII we have stored, you can request your data.