From 010069d3289c6415c07fce8c3a3e0847a3ebe8f7 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Thu, 16 Mar 2023 12:57:44 +0100
Subject: [PATCH] =?UTF-8?q?P=C5=99i=20zm=C4=9Bn=C4=9B=20e-mailu=20pos?=
 =?UTF-8?q?=C3=ADl=C3=A1me=20potvrzovac=C3=AD=20mail=20na=20*novou*=20adre?=
 =?UTF-8?q?su?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/email.py    | 8 ++++----
 mo/web/acct.py | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/mo/email.py b/mo/email.py
index 174e0542..84bac734 100644
--- a/mo/email.py
+++ b/mo/email.py
@@ -69,7 +69,7 @@ def send_email(send_to: str, full_name: str, subject: str, body: str) -> bool:
     return True
 
 
-def send_user_email(user: db.User, subject: str, body: str, add_footer: bool = False) -> bool:
+def send_user_email(user: db.User, subject: str, body: str, add_footer: bool = False, override_email: Optional[str] = None) -> bool:
     logger.info(f'Mail: "{subject}" -> {user.email} (#{user.user_id})')
 
     if add_footer:
@@ -77,7 +77,7 @@ def send_user_email(user: db.User, subject: str, body: str, add_footer: bool = F
         body += "Pokud nechcete tyto e-maily dostávat, vypněte si notifikace v nastavení\n"
         body += f"svého účtu na {settings_url()}."
 
-    return send_email(user.email, user.full_name(), 'OSMO – ' + subject, body)
+    return send_email(override_email or user.email, user.full_name(), 'OSMO – ' + subject, body)
 
 
 def activate_url(token: str) -> str:
@@ -136,7 +136,7 @@ def send_confirm_create_email(user: db.User, token: str) -> bool:
     '''.format(confirm_url('r', token))))
 
 
-def send_confirm_change_email(user: db.User, token: str) -> bool:
+def send_confirm_change_email(user: db.User, token: str, new_email: str) -> bool:
     return send_user_email(user, 'Změna e-mailové adresy', textwrap.dedent('''\
         Někdo (pravděpodobně Vy) požádal o nastavení e-mailové adresy k účtu
         v Odevzdávacím systému Matematické olympiády na tuto adresu.
@@ -145,7 +145,7 @@ def send_confirm_change_email(user: db.User, token: str) -> bool:
                 {}
 
         Váš OSMO
-    '''.format(confirm_url('e', token))))
+    '''.format(confirm_url('e', token))), override_email=new_email)
 
 
 def send_join_notify_email(dest: db.User, who: db.User, contest: db.Contest) -> bool:
diff --git a/mo/web/acct.py b/mo/web/acct.py
index d906e409..b517c181 100644
--- a/mo/web/acct.py
+++ b/mo/web/acct.py
@@ -205,7 +205,7 @@ def user_settings_personal():
                     sess.commit()
                     app.logger.info(f'Settings: Požadavek na změnu e-mailu uživatele #{user.user_id}')
                     flash('Odeslán e-mail s odkazem na potvrzení nové adresy.', 'success')
-                    mo.email.send_confirm_change_email(user, rr.email_token)
+                    mo.email.send_confirm_change_email(user, rr.email_token, new_email=rr.email)
                 else:
                     app.logger.info('Settings: Rate limit')
                     flash('Příliš mnoho požadavků na změny e-mailu. Počkejte prosím chvíli a zkuste to znovu.', 'danger')
-- 
GitLab