From 7517619e3caba7cd36f69f2f4b872cb75502ae97 Mon Sep 17 00:00:00 2001 From: Martin Fenner Date: Thu, 15 Nov 2018 00:18:41 +0100 Subject: [PATCH] send email and slack message when account gets deleted --- app/controllers/clients_controller.rb | 2 +- app/controllers/providers_controller.rb | 2 +- app/models/client.rb | 1 + app/models/concerns/mailable.rb | 18 ++++++++++ app/models/provider.rb | 1 + app/views/users/delete.html.erb | 47 +++++++++++++++++++++++++ app/views/users/delete.text.erb | 17 +++++++++ 7 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 app/views/users/delete.html.erb create mode 100644 app/views/users/delete.text.erb diff --git a/app/controllers/clients_controller.rb b/app/controllers/clients_controller.rb index 00291872e..49f96fb3c 100644 --- a/app/controllers/clients_controller.rb +++ b/app/controllers/clients_controller.rb @@ -31,7 +31,7 @@ def index elsif params[:ids].present? response = Client.find_by_ids(params[:ids], page: page, sort: sort) else - response = Client.query(params[:query], year: params[:year], provider_id: params[:provider_id], include_deleted: params[:include_deleted], fields: params[:fields], page: page, sort: sort) + response = Client.query(params[:query], year: params[:year], provider_id: params[:provider_id], fields: params[:fields], page: page, sort: sort) end total = response.results.total diff --git a/app/controllers/providers_controller.rb b/app/controllers/providers_controller.rb index 0e0da3419..ed173c0b7 100644 --- a/app/controllers/providers_controller.rb +++ b/app/controllers/providers_controller.rb @@ -30,7 +30,7 @@ def index elsif params[:ids].present? response = Provider.find_by_ids(params[:ids], page: page, sort: sort) else - response = Provider.query(params[:query], year: params[:year], region: params[:region], organization_type: params[:organization_type], focus_area: params[:focus_area], include_deleted: params[:include_deleted], fields: params[:fields], page: page, sort: sort) + response = Provider.query(params[:query], year: params[:year], region: params[:region], organization_type: params[:organization_type], focus_area: params[:focus_area], fields: params[:fields], page: page, sort: sort) end total = response.results.total diff --git a/app/models/client.rb b/app/models/client.rb index 774d533e3..83730ecc4 100644 --- a/app/models/client.rb +++ b/app/models/client.rb @@ -51,6 +51,7 @@ class Client < ActiveRecord::Base before_save { self.updated = Time.zone.now.utc.iso8601 } after_create :send_welcome_email, unless: Proc.new { Rails.env.test? } + before_delete :send_delete_email, unless: Proc.new { Rails.env.test? } attr_accessor :target_id diff --git a/app/models/concerns/mailable.rb b/app/models/concerns/mailable.rb index 01ea88e24..b75d05867 100644 --- a/app/models/concerns/mailable.rb +++ b/app/models/concerns/mailable.rb @@ -33,6 +33,24 @@ def send_welcome_email response = User.send_message(name: contact_name, email: contact_email, subject: subject, text: text, html: html) + fields = [ + { title: "Account ID", value: symbol}, + { title: "Contact name", value: contact_name, short: true }, + { title: "Contact email", value: contact_email, short: true } + ] + User.send_notification_to_slack(nil, title: subject, level: "warning", fields: fields) + + response + end + + def send_delete_email + title = Rails.env.stage? ? "DataCite DOI Fabrica Test" : "DataCite DOI Fabrica" + subject = "#{title}: Account Deleted" + text = User.format_message_text(template: "users/delete.text.erb", title: title, contact_name: contact_name, name: symbol) + html = User.format_message_html(template: "users/delete.html.erb", title: title, contact_name: contact_name, name: symbol) + + response = User.send_message(name: contact_name, email: contact_email, subject: subject, text: text, html: html) + fields = [ { title: "Account ID", value: symbol}, { title: "Contact name", value: contact_name, short: true }, diff --git a/app/models/provider.rb b/app/models/provider.rb index ccb8cea59..7e51cddb7 100644 --- a/app/models/provider.rb +++ b/app/models/provider.rb @@ -54,6 +54,7 @@ class Provider < ActiveRecord::Base before_save { self.updated = Time.zone.now.utc.iso8601 } after_create :send_welcome_email, unless: Proc.new { Rails.env.test? } + before_delete :send_delete_email, unless: Proc.new { Rails.env.test? } accepts_nested_attributes_for :prefixes diff --git a/app/views/users/delete.html.erb b/app/views/users/delete.html.erb new file mode 100644 index 000000000..77bbd185b --- /dev/null +++ b/app/views/users/delete.html.erb @@ -0,0 +1,47 @@ +Use this link to generate a password. The link is only valid for 24 hours. + + + + +
+ + + + + + + + + + + + +
diff --git a/app/views/users/delete.text.erb b/app/views/users/delete.text.erb new file mode 100644 index 000000000..612b434da --- /dev/null +++ b/app/views/users/delete.text.erb @@ -0,0 +1,17 @@ +Dear <%= @contact_name %>, + +The <%= @title %> account named <%= @name %> +has been deleted. If this was done in error, please +reach out to DataCite Support and we can re-enable the +<%= @name %> account. + +Thanks, + +The DataCite Support Team + + +DataCite +Am Welfengarten 1B +30167 Hannover +Germany +Email: support@datacite.org