details:   https://code.tryton.org/tryton/commit/856dea6dca76
branch:    default
user:      Cédric Krier <[email protected]>
date:      Tue Jun 23 22:03:06 2026 +0200
description:
        Enforce access rights on the email template record on marketing email

        Closes #14907
diffstat:

 modules/marketing_email/CHANGELOG    |  1 +
 modules/marketing_email/marketing.py |  9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletions(-)

diffs (41 lines):

diff -r 5c64e83a573c -r 856dea6dca76 modules/marketing_email/CHANGELOG
--- a/modules/marketing_email/CHANGELOG Tue Jun 23 22:02:47 2026 +0200
+++ b/modules/marketing_email/CHANGELOG Tue Jun 23 22:03:06 2026 +0200
@@ -1,3 +1,4 @@
+* Enforce access rights on the email template record (issue14907)
 
 Version 8.0.0 - 2026-04-20
 --------------------------
diff -r 5c64e83a573c -r 856dea6dca76 modules/marketing_email/marketing.py
--- a/modules/marketing_email/marketing.py      Tue Jun 23 22:02:47 2026 +0200
+++ b/modules/marketing_email/marketing.py      Tue Jun 23 22:03:06 2026 +0200
@@ -17,7 +17,8 @@
 from trytond.i18n import gettext
 from trytond.ir.session import token_hex
 from trytond.model import (
-    DeactivableMixin, Index, ModelSQL, ModelView, Unique, Workflow, fields)
+    DeactivableMixin, Index, ModelAccessProxy, ModelSQL, ModelView, Unique,
+    Workflow, fields)
 from trytond.pool import Pool
 from trytond.pyson import Eval
 from trytond.report import Report, get_email, html_to_text, mjml_to_html
@@ -427,6 +428,7 @@
     def process(cls, messages=None, emails=None, smtpd_datamanager=None):
         pool = Pool()
         WebShortener = pool.get('web.shortened_url')
+        ModelData = pool.get('ir.model.data')
         spy_pixel = config.getboolean(
             'marketing', 'email_spy_pixel', default=False)
 
@@ -480,6 +482,11 @@
                         message=message.rec_name,
                         exception=exception)) from exception
             for email in (emails or message.list_.emails):
+                email = ModelAccessProxy(
+                    email, {
+                        '_groups': [
+                            ModelData.get_id('marketing.group_marketing')],
+                        })
                 content = (template
                     .generate(
                         email=email,

Reply via email to