From ddcd46807019cd283bf3cf3fe15ed3f1a4545729 Mon Sep 17 00:00:00 2001 From: Jyri-Petteri Paloposki Date: Tue, 22 Feb 2022 18:46:14 +0200 Subject: [PATCH] Add a user preference that can be used as a fallback for the sender authentication. --- app/controllers/preferences_controller.rb | 2 +- app/models/message_gateway.rb | 12 +++++++++--- app/views/preferences/_tracks_behavior.html.erb | 3 +++ config/locales/en.yml | 1 + config/locales/fi.yml | 1 + ...22184000_add_smspermittedsenders_to_preference.rb | 5 +++++ db/schema.rb | 1 + 7 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20220222184000_add_smspermittedsenders_to_preference.rb diff --git a/app/controllers/preferences_controller.rb b/app/controllers/preferences_controller.rb index 96e36c6a..61fbc390 100644 --- a/app/controllers/preferences_controller.rb +++ b/app/controllers/preferences_controller.rb @@ -39,7 +39,7 @@ class PreferencesController < ApplicationController :staleness_starts, :due_style, :locale, :title_date_format, :time_zone, :show_hidden_projects_in_sidebar, :show_project_on_todo_done, :review_period, :refresh, :verbose_action_descriptors, - :mobile_todos_per_page, :sms_email, :sms_context_id, :theme) + :mobile_todos_per_page, :sms_email, :sms_context_id, :sms_permitted_senders, :theme) end def user_params diff --git a/app/models/message_gateway.rb b/app/models/message_gateway.rb index 2a125cd7..187a97f0 100644 --- a/app/models/message_gateway.rb +++ b/app/models/message_gateway.rb @@ -99,9 +99,15 @@ class MessageGateway < ActionMailer::Base end def sender_is_in_mailmap?(user, email) - if (SITE_CONFIG['mailmap'].is_a? Hash) && SITE_CONFIG['email_dispatch'] == 'to' - # Look for the sender in the map of allowed senders - SITE_CONFIG['mailmap'][user.preference.sms_email].include? email.from[0] + if SITE_CONFIG['email_dispatch'] == 'to' + if SITE_CONFIG['mailmap'].is_a? Hash + # Look for the sender in the map of allowed senders + SITE_CONFIG['mailmap'][user.preference.sms_email].include? email.from[0] + else + # If the config mailmap isn't defined, use the values provided by the users. + pref_senders = user.prefs.sms_permitted_senders.split(',').collect(&:strip) + pref_senders.include? email.from[0] + end else # We can't check the map if it's not defined, or if the lookup is the # wrong way round, so just allow it diff --git a/app/views/preferences/_tracks_behavior.html.erb b/app/views/preferences/_tracks_behavior.html.erb index da5e5473..b9fff24d 100644 --- a/app/views/preferences/_tracks_behavior.html.erb +++ b/app/views/preferences/_tracks_behavior.html.erb @@ -37,6 +37,9 @@
<%= pref('prefs', "sms_context") { select('prefs', 'sms_context_id', current_user.contexts.map{|c| [c.name, c.id]}, {}, class: "form-control") } %>
+
+ <%= pref_with_text_field('prefs', "sms_permitted_senders") %> +
<%= pref_with_select_field('prefs', 'theme', [[t('models.preference.themes.black'), Preference.themes[:black]], [t('models.preference.themes.light_blue'), Preference.themes[:light_blue]]]) %>
diff --git a/config/locales/en.yml b/config/locales/en.yml index f0482daf..8ec6a5a7 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -21,6 +21,7 @@ en: show_project_on_todo_done: Go to project page on completing todo sms_context: Default email context sms_email: From email + sms_permitted_senders: Permitted email senders (use comma as separator) staleness_starts: Start of staleness theme: Theme time_zone: Time zone diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 1d71e162..db3e9ee8 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -21,6 +21,7 @@ fi: show_project_on_todo_done: Siirry projektinäkymään toimenpiteen valmistuessa sms_context: Sähköpostin oletusasiayhteys sms_email: Lähettäjän sähköpostiosoite + sms_permitted_senders: Sallitut lähettäjät (käytä pilkkua erottimena) staleness_starts: Vanhentumisen alkaminen time_zone: Aikavyöhyke title_date_format: Otsakkeen päivämäärämuoto diff --git a/db/migrate/20220222184000_add_smspermittedsenders_to_preference.rb b/db/migrate/20220222184000_add_smspermittedsenders_to_preference.rb new file mode 100644 index 00000000..8a37b6e5 --- /dev/null +++ b/db/migrate/20220222184000_add_smspermittedsenders_to_preference.rb @@ -0,0 +1,5 @@ +class AddSmspermittedsendersToPreference < ActiveRecord::Migration[5.2] + def change + add_column :preferences, :sms_permitted_senders, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index a0b9a251..212f578a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -88,6 +88,7 @@ ActiveRecord::Schema.define(version: 2020_08_20_000743) do t.string "locale" t.integer "review_period", default: 14, null: false t.string "theme" + t.string "sms_permitted_senders" t.index ["user_id"], name: "index_preferences_on_user_id" end