diff --git a/tests/models/test_services.py b/tests/models/test_services.py index d6836b5f7d3d8dfbb329d639b29415e7491ee374..2e411c9d8366a5db8d19624b84ce6e9e57a91257 100644 --- a/tests/models/test_services.py +++ b/tests/models/test_services.py @@ -10,7 +10,7 @@ from tests.utils import UffdTestCase class TestServiceUser(UffdTestCase): def setUp(self): super().setUp() - db.session.add_all([Service(name='service1'), Service(name='service2', remailer_mode=RemailerMode.ENABLED_V1)]) + db.session.add_all([Service(name='service1', limit_access=False), Service(name='service2', remailer_mode=RemailerMode.ENABLED_V1, limit_access=False)]) db.session.commit() def test_auto_create(self): @@ -79,6 +79,12 @@ class TestServiceUser(UffdTestCase): self.assertEqual(service_user.real_email, user.primary_email.address) service.enable_email_preferences = True self.assertEqual(service_user.real_email, service_user.service_email.address) + service.limit_access = True + self.assertEqual(service_user.real_email, user.primary_email.address) + service.access_group = self.get_admin_group() + self.assertEqual(service_user.real_email, user.primary_email.address) + service.access_group = self.get_users_group() + self.assertEqual(service_user.real_email, service_user.service_email.address) def test_get_by_remailer_email(self): user = self.get_user() @@ -158,6 +164,8 @@ class TestServiceUser(UffdTestCase): [RemailerMode.DISABLED, RemailerMode.ENABLED_V1, RemailerMode.ENABLED_V2], # service.enable_email_preferences [True, False], + # service.limit_access, service.access_group + [(False, None), (True, None), (True, self.get_admin_group()), (True, self.get_users_group())], # service_user.service_email [None, email1, email2], # service_user.remailer_overwrite_mode @@ -169,8 +177,9 @@ class TestServiceUser(UffdTestCase): self.app.config['REMAILER_LIMIT_TO_USERS'] = options[2] service.remailer_mode = options[3] service.enable_email_preferences = options[4] - service_user.service_email = options[5] - service_user.remailer_overwrite_mode = options[6] + service.limit_access, service.access_group = options[5] + service_user.service_email = options[6] + service_user.remailer_overwrite_mode = options[7] a = {result for result in all_service_users if result.email == value} b = set(ServiceUser.filter_query_by_email(ServiceUser.query, value).all()) if a != b: diff --git a/tests/views/test_selfservice.py b/tests/views/test_selfservice.py index 5bf3e8f46e1693520c6704dccba4f4910bc45639..1b598aa92ac57e06b9be460e01821e89a40868f5 100644 --- a/tests/views/test_selfservice.py +++ b/tests/views/test_selfservice.py @@ -200,7 +200,7 @@ class TestSelfservice(UffdTestCase): user_id = self.get_user().id email = UserEmail(user=self.get_user(), address='new@example.com', verified=True) db.session.add(email) - service = Service(name='service', enable_email_preferences=True) + service = Service(name='service', enable_email_preferences=True, limit_access=False) db.session.add(service) db.session.commit() email_id = email.id @@ -235,7 +235,7 @@ class TestSelfservice(UffdTestCase): user_id = self.get_user().id email = UserEmail(user=self.get_user(), address='new@example.com') db.session.add(email) - service = Service(name='service', enable_email_preferences=True) + service = Service(name='service', enable_email_preferences=True, limit_access=False) db.session.add(service) db.session.commit() email_id = email.id @@ -262,7 +262,7 @@ class TestSelfservice(UffdTestCase): user_id = self.get_user().id email = UserEmail(user=self.get_user(), address='new@example.com', verified=True) db.session.add(email) - service = Service(name='service', enable_email_preferences=True) + service = Service(name='service', enable_email_preferences=True, limit_access=False) db.session.add(service) db.session.commit() with self.assertRaises(Exception): diff --git a/tests/views/test_user.py b/tests/views/test_user.py index e51d305f0eafba27d790978c7f22a671b76d0741..a024b53d6c79322c427108feda3953be778af98c 100644 --- a/tests/views/test_user.py +++ b/tests/views/test_user.py @@ -220,8 +220,8 @@ class TestUserViews(UffdTestCase): def test_update_email(self): user = self.get_user() email = UserEmail(user=user, address='foo@example.com') - service1 = Service(name='service1', enable_email_preferences=True) - service2 = Service(name='service2', enable_email_preferences=True) + service1 = Service(name='service1', enable_email_preferences=True, limit_access=False) + service2 = Service(name='service2', enable_email_preferences=True, limit_access=False) db.session.add_all([service1, service2]) db.session.commit() email1_id = user.primary_email.id @@ -276,8 +276,8 @@ class TestUserViews(UffdTestCase): db.session.commit() user = self.get_user() email = UserEmail(user=user, address='foo@example.com') - service1 = Service(name='service1', enable_email_preferences=True) - service2 = Service(name='service2', enable_email_preferences=True) + service1 = Service(name='service1', enable_email_preferences=True, limit_access=False) + service2 = Service(name='service2', enable_email_preferences=True, limit_access=False) db.session.add_all([service1, service2]) db.session.commit() email1_id = user.primary_email.id diff --git a/uffd/models/service.py b/uffd/models/service.py index 2143e6740fd119d39698bd465438ead46e23fb6d..ff31419bc276b07850ce5c619f4e4f6c24380668 100644 --- a/uffd/models/service.py +++ b/uffd/models/service.py @@ -8,7 +8,7 @@ from sqlalchemy.orm import relationship, validates from uffd.database import db from uffd.remailer import remailer from uffd.tasks import cleanup_task -from .user import User, UserEmail +from .user import User, UserEmail, user_groups class RemailerMode(enum.Enum): DISABLED = 0 @@ -58,6 +58,10 @@ class ServiceUser(db.Model): def has_access(self): return not self.service.limit_access or self.service.access_group in self.user.groups + @property + def has_email_preferences(self): + return self.has_access and self.service.enable_email_preferences + remailer_overwrite_mode = Column(Enum(RemailerMode), default=None, nullable=True) @property @@ -88,7 +92,7 @@ class ServiceUser(db.Model): # Actual e-mail address that mails from the service are sent to @property def real_email(self): - if self.service.enable_email_preferences and self.service_email: + if self.has_email_preferences and self.service_email: return self.service_email.address return self.user.primary_email.address @@ -124,6 +128,7 @@ class ServiceUser(db.Model): AliasedPrimaryEmail = db.aliased(UserEmail) AliasedServiceEmail = db.aliased(UserEmail) AliasedService = db.aliased(Service) + aliased_user_groups = db.aliased(user_groups) query = query.join(cls.user.of_type(AliasedUser)) query = query.join(AliasedUser.primary_email.of_type(AliasedPrimaryEmail)) @@ -142,10 +147,21 @@ class ServiceUser(db.Model): ], else_=(AliasedService.remailer_mode != RemailerMode.DISABLED) ) + has_access = db.or_( + db.not_(AliasedService.limit_access), + db.exists().where(db.and_( + aliased_user_groups.c.user_id == AliasedUser.id, + aliased_user_groups.c.group_id == AliasedService.access_group_id, + )) + ) + has_email_preferences = db.and_( + has_access, + AliasedService.enable_email_preferences, + ) real_email_matches = db.case( whens=[ # pylint: disable=singleton-comparison - (db.and_(AliasedService.enable_email_preferences, cls.service_email != None), AliasedServiceEmail.address == email), + (db.and_(has_email_preferences, cls.service_email != None), AliasedServiceEmail.address == email), ], else_=(AliasedPrimaryEmail.address == email) ) diff --git a/uffd/templates/selfservice/self.html b/uffd/templates/selfservice/self.html index 6fcb2ed215602a6497fc92465020e731dca12b08..6e032d5b1b67c1a38fbdebbcc82209ccac0fdc0d 100644 --- a/uffd/templates/selfservice/self.html +++ b/uffd/templates/selfservice/self.html @@ -74,12 +74,14 @@ <hr> +{% set service_users_with_email_prefs = user.service_users|selectattr('has_email_preferences')|list %} +{% set collapse_email_prefs = service_users_with_email_prefs|length > 2 %} <div class="row"> <div class="col-12 col-md-5"> <h5>{{_("E-Mail Preferences")}}</h5> <p> {{ _("Choose your primary e-mail address and the address password recovery e-mails will be sent to.") }} - {% if user.service_users|map(attribute='service')|selectattr('enable_email_preferences')|list|length %} + {% if service_users_with_email_prefs %} {{ _("You can also select different addresses for different services.") }} {% endif %} </p> @@ -104,8 +106,7 @@ {% endfor %} </select> </div> - {% set collapse_email_prefs = user.service_users|map(attribute='service')|selectattr('enable_email_preferences')|list|length > 2 %} - {% for service_user in user.service_users if service_user.service.enable_email_preferences %} + {% for service_user in service_users_with_email_prefs %} {% if collapse_email_prefs and loop.index == 2 %} <div id="collapsed-email-prefs"> {% endif %} diff --git a/uffd/templates/service/show.html b/uffd/templates/service/show.html index 5277fa41751cfbc4fce96f2174ad05767ff652d5..08d03ba01e0607d68e7ebcac95a29b3b528581c1 100644 --- a/uffd/templates/service/show.html +++ b/uffd/templates/service/show.html @@ -31,6 +31,16 @@ </select> </div> + <div class="form-group col"> + <div class="form-check"> + <input class="form-check-input" type="checkbox" id="service-enable-email-preferences" name="enable_email_preferences" value="1" aria-label="enabled" {{ 'checked' if service.enable_email_preferences }}> + <label class="form-check-label" for="service-enable-email-preferences">{{ _('Allow users with access to select a different e-mail address for this service') }}</label> + <small class="form-text text-muted"> + {{ _('If disabled, the service always uses the primary e-mail address.') }} + </small> + </div> + </div> + <div class="form-group col"> <label for="remailer-mode"> {{ _('Hide e-mail addresses with remailer') }} @@ -78,16 +88,6 @@ </small> </div> - <div class="form-group col"> - <div class="form-check"> - <input class="form-check-input" type="checkbox" id="service-enable-email-preferences" name="enable_email_preferences" value="1" aria-label="enabled" {{ 'checked' if service.enable_email_preferences }}> - <label class="form-check-label" for="service-enable-email-preferences">{{ _('Allow users to select a different e-mail address for this service') }}</label> - <small class="form-text text-muted"> - {{ _('If disabled, the service always uses the primary e-mail address.') }} - </small> - </div> - </div> - </form> {% if service.id %} diff --git a/uffd/templates/user/show.html b/uffd/templates/user/show.html index bc22d8e54c5d83242b39e0ec8c7a602fd1096dd0..7a4f265d47fd940ef7067c56be836cf2f8a9ad13 100644 --- a/uffd/templates/user/show.html +++ b/uffd/templates/user/show.html @@ -146,7 +146,7 @@ {% endfor %} </select> </div> - {% for service_user in user.service_users if service_user.service.enable_email_preferences %} + {% for service_user in user.service_users if service_user.has_email_preferences %} <div class="form-group col"> <label>{{ _("Address for %(name)s", name=service_user.service.name) }}</label> <select name="service_{{ service_user.service.id }}_email" class="form-control"> diff --git a/uffd/translations/de/LC_MESSAGES/messages.mo b/uffd/translations/de/LC_MESSAGES/messages.mo index 0897f2eba472b656935ffde9314eb66162e0fef2..18d96bb2f77e2483e726cbbf418892af96e7fd69 100644 Binary files a/uffd/translations/de/LC_MESSAGES/messages.mo and b/uffd/translations/de/LC_MESSAGES/messages.mo differ diff --git a/uffd/translations/de/LC_MESSAGES/messages.po b/uffd/translations/de/LC_MESSAGES/messages.po index 5738094ae9a4f4e90d9b1e17bf21e6891a065aa0..667d221f4a330cd57d28e0d83f184245fa7470c5 100644 --- a/uffd/translations/de/LC_MESSAGES/messages.po +++ b/uffd/translations/de/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2022-11-06 01:46+0100\n" +"POT-Creation-Date: 2022-11-08 20:12+0100\n" "PO-Revision-Date: 2021-05-25 21:18+0200\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language: de\n" @@ -160,7 +160,7 @@ msgstr "GID" #: uffd/templates/mfa/setup.html:157 uffd/templates/mfa/setup.html:158 #: uffd/templates/mfa/setup.html:169 uffd/templates/role/list.html:14 #: uffd/templates/rolemod/list.html:9 uffd/templates/rolemod/show.html:44 -#: uffd/templates/selfservice/self.html:189 +#: uffd/templates/selfservice/self.html:190 #: uffd/templates/service/index.html:14 uffd/templates/service/show.html:20 #: uffd/templates/service/show.html:133 uffd/templates/user/show.html:193 #: uffd/templates/user/show.html:225 @@ -170,7 +170,7 @@ msgstr "Name" #: uffd/templates/group/list.html:16 uffd/templates/group/show.html:33 #: uffd/templates/invite/new.html:36 uffd/templates/role/list.html:15 #: uffd/templates/role/show.html:48 uffd/templates/rolemod/list.html:10 -#: uffd/templates/rolemod/show.html:26 uffd/templates/selfservice/self.html:190 +#: uffd/templates/rolemod/show.html:26 uffd/templates/selfservice/self.html:191 #: uffd/templates/user/show.html:194 uffd/templates/user/show.html:226 msgid "Description" msgstr "Beschreibung" @@ -195,7 +195,7 @@ msgstr "Abbrechen" #: uffd/templates/group/show.html:11 uffd/templates/role/show.html:19 #: uffd/templates/role/show.html:21 uffd/templates/selfservice/self.html:61 -#: uffd/templates/selfservice/self.html:204 uffd/templates/service/api.html:11 +#: uffd/templates/selfservice/self.html:205 uffd/templates/service/api.html:11 #: uffd/templates/service/oauth2.html:11 uffd/templates/service/show.html:12 #: uffd/templates/user/show.html:29 uffd/templates/user/show.html:181 msgid "Are you sure?" @@ -459,7 +459,7 @@ msgstr "" msgid "One address per line" msgstr "Eine Adresse pro Zeile" -#: uffd/templates/mfa/auth.html:6 uffd/templates/selfservice/self.html:158 +#: uffd/templates/mfa/auth.html:6 uffd/templates/selfservice/self.html:159 #: uffd/templates/user/show.html:176 msgid "Two-Factor Authentication" msgstr "Zwei-Faktor-Authentifizierung" @@ -567,11 +567,11 @@ msgstr "" msgid "Disable two-factor authentication" msgstr "Zwei-Faktor-Authentifizierung (2FA) deaktivieren" -#: uffd/templates/mfa/setup.html:18 uffd/templates/selfservice/self.html:164 +#: uffd/templates/mfa/setup.html:18 uffd/templates/selfservice/self.html:165 msgid "Two-factor authentication is currently <strong>enabled</strong>." msgstr "Die Zwei-Faktor-Authentifizierung ist derzeit <strong>aktiviert</strong>." -#: uffd/templates/mfa/setup.html:20 uffd/templates/selfservice/self.html:166 +#: uffd/templates/mfa/setup.html:20 uffd/templates/selfservice/self.html:167 msgid "Two-factor authentication is currently <strong>disabled</strong>." msgstr "" "Die Zwei-Faktor-Authentifizierung ist derzeit " @@ -1059,11 +1059,11 @@ msgstr "Primäre E-Mail-Adresse kann nicht gelöscht werden" msgid "Retry verification" msgstr "Bestätigungslink neusenden" -#: uffd/templates/selfservice/self.html:79 +#: uffd/templates/selfservice/self.html:81 msgid "E-Mail Preferences" msgstr "E-Mail-Einstellungen" -#: uffd/templates/selfservice/self.html:81 +#: uffd/templates/selfservice/self.html:83 msgid "" "Choose your primary e-mail address and the address password recovery " "e-mails will be sent to." @@ -1071,50 +1071,50 @@ msgstr "" "Wähle deine primäre Adresse und die Adresse für Passwort-" "Zurücksetzen-E-Mails aus." -#: uffd/templates/selfservice/self.html:83 +#: uffd/templates/selfservice/self.html:85 msgid "You can also select different addresses for different services." msgstr "" "Du kannst für unterschiedliche Dienste unterschiedliche Adressen " "verwenden." -#: uffd/templates/selfservice/self.html:86 +#: uffd/templates/selfservice/self.html:88 msgid "Adresses must be verified before you can select them here." msgstr "Adressen müssen bestätigt sein, damit du sie hier auswählen kannst." -#: uffd/templates/selfservice/self.html:91 +#: uffd/templates/selfservice/self.html:93 msgid "Primary Address" msgstr "Primäre Adresse" -#: uffd/templates/selfservice/self.html:99 +#: uffd/templates/selfservice/self.html:101 msgid "Address for Password Reset E-Mails" msgstr "Adresse für Passwort-Zurücksetzen-E-Mails" -#: uffd/templates/selfservice/self.html:101 -#: uffd/templates/selfservice/self.html:115 uffd/templates/user/show.html:143 +#: uffd/templates/selfservice/self.html:103 +#: uffd/templates/selfservice/self.html:116 uffd/templates/user/show.html:143 #: uffd/templates/user/show.html:153 msgid "Use primary address" msgstr "Primäre Adresse verwenden" -#: uffd/templates/selfservice/self.html:113 +#: uffd/templates/selfservice/self.html:114 #, python-format msgid "Address for Service \"%(name)s\"" msgstr "Adresse für Dienst „%(name)s“" -#: uffd/templates/selfservice/self.html:124 +#: uffd/templates/selfservice/self.html:125 msgid "Show more settings ..." msgstr "Weitere Einstellungen anzeigen ..." -#: uffd/templates/selfservice/self.html:126 +#: uffd/templates/selfservice/self.html:127 msgid "Update E-Mail Preferences" msgstr "E-Mail-Einstellungen speichern" -#: uffd/templates/selfservice/self.html:135 +#: uffd/templates/selfservice/self.html:136 #: uffd/templates/session/login.html:16 uffd/templates/signup/start.html:36 #: uffd/templates/user/show.html:163 msgid "Password" msgstr "Passwort" -#: uffd/templates/selfservice/self.html:136 +#: uffd/templates/selfservice/self.html:137 msgid "" "Your login password for the Single-Sign-On. Only enter it on the Single-" "Sign-On login page! No other legit websites will ask you for this " @@ -1125,22 +1125,22 @@ msgstr "" " Webseite wird dich nach diesem Passwort fragen. Es wird auch niemals für" " Support-Anfragen benötigt." -#: uffd/templates/selfservice/self.html:141 +#: uffd/templates/selfservice/self.html:142 #: uffd/templates/selfservice/set_password.html:9 msgid "New Password" msgstr "Neues Passwort" -#: uffd/templates/selfservice/self.html:147 +#: uffd/templates/selfservice/self.html:148 #: uffd/templates/selfservice/set_password.html:16 #: uffd/templates/signup/start.html:43 msgid "Repeat Password" msgstr "Passwort wiederholen" -#: uffd/templates/selfservice/self.html:149 +#: uffd/templates/selfservice/self.html:150 msgid "Change Password" msgstr "Passwort ändern" -#: uffd/templates/selfservice/self.html:159 +#: uffd/templates/selfservice/self.html:160 msgid "" "Setting up Two-Factor Authentication (2FA) adds an additional step to the" " Single-Sign-On login and increases the security of your account " @@ -1150,17 +1150,17 @@ msgstr "" "Anmeldung im Single-Sign-On hinzu und verbessert damit die Sicherheit " "deines Accounts erheblich." -#: uffd/templates/selfservice/self.html:169 +#: uffd/templates/selfservice/self.html:170 msgid "Manage two-factor authentication" msgstr "Zwei-Faktor-Authentifizierung (2FA) verwalten" -#: uffd/templates/selfservice/self.html:177 uffd/templates/user/list.html:20 +#: uffd/templates/selfservice/self.html:178 uffd/templates/user/list.html:20 #: uffd/templates/user/show.html:39 uffd/templates/user/show.html:188 #: uffd/views/role.py:21 msgid "Roles" msgstr "Rollen" -#: uffd/templates/selfservice/self.html:178 +#: uffd/templates/selfservice/self.html:179 msgid "" "Aside from a set of base permissions, your roles determine the " "permissions of your account." @@ -1168,7 +1168,7 @@ msgstr "" "Deine Berechtigungen werden, von einigen Basis-Berechtigungen abgesehen, " "von deinen Rollen bestimmt" -#: uffd/templates/selfservice/self.html:180 +#: uffd/templates/selfservice/self.html:181 #, python-format msgid "" "See <a href=\"%(services_url)s\">Services</a> for an overview of your " @@ -1177,13 +1177,13 @@ msgstr "" "Auf <a href=\"%(services_url)s\">Dienste</a> erhälst du einen Überblick " "über deine aktuellen Berechtigungen." -#: uffd/templates/selfservice/self.html:184 +#: uffd/templates/selfservice/self.html:185 msgid "Administrators and role moderators can invite you to new roles." msgstr "" "Accounts mit Adminrechten oder Rollen-Moderationsrechten können dich zu " "Rollen einladen." -#: uffd/templates/selfservice/self.html:199 +#: uffd/templates/selfservice/self.html:200 msgid "" "Some permissions in this role require you to setup two-factor " "authentication" @@ -1191,11 +1191,11 @@ msgstr "" "Einige Berechtigungen dieser Rolle erfordern das Einrichten von Zwei-" "Faktor-Authentifikation" -#: uffd/templates/selfservice/self.html:205 +#: uffd/templates/selfservice/self.html:206 msgid "Leave" msgstr "Verlassen" -#: uffd/templates/selfservice/self.html:212 +#: uffd/templates/selfservice/self.html:213 msgid "You currently don't have any roles" msgstr "Du hast derzeit keine Rollen" @@ -1231,7 +1231,7 @@ msgstr "Zugriff auf Mail-Weiterleitungen" msgid "Resolve remailer addresses" msgstr "Auflösen von Remailer-Adressen" -#: uffd/templates/service/api.html:51 uffd/templates/service/show.html:38 +#: uffd/templates/service/api.html:51 uffd/templates/service/show.html:48 msgid "This option has no effect: Remailer config options are unset" msgstr "Diese Option hat keine Auswirkung: Remailer ist nicht konfiguriert" @@ -1308,25 +1308,37 @@ msgstr "Alle Account haben Zugriff (veraltet)" msgid "Members of group \"%(group_name)s\" have access" msgstr "Mitglieder der Gruppe \"%(group_name)s\" haben Zugriff" -#: uffd/templates/service/show.html:36 +#: uffd/templates/service/show.html:37 +msgid "" +"Allow users with access to select a different e-mail address for this " +"service" +msgstr "" +"Ermögliche Nutzern mit Zugriff auf diesen Dienst eine andere E-Mail-" +"Adresse auszuwählen" + +#: uffd/templates/service/show.html:39 +msgid "If disabled, the service always uses the primary e-mail address." +msgstr "Wenn deaktiviert, wird immer die primäre E-Mail-Adresse verwendet." + +#: uffd/templates/service/show.html:46 msgid "Hide e-mail addresses with remailer" msgstr "E-Mail-Adressen mit Remailer verstecken" -#: uffd/templates/service/show.html:43 uffd/templates/service/show.html:66 +#: uffd/templates/service/show.html:53 uffd/templates/service/show.html:76 msgid "Remailer disabled" msgstr "Remailer deaktiviert" -#: uffd/templates/service/show.html:46 uffd/templates/service/show.html:69 +#: uffd/templates/service/show.html:56 uffd/templates/service/show.html:79 msgid "Remailer enabled" msgstr "Remailer aktiviert" -#: uffd/templates/service/show.html:49 uffd/templates/service/show.html:72 +#: uffd/templates/service/show.html:59 uffd/templates/service/show.html:82 msgid "Remailer enabled (deprecated, case-sensitive format)" msgstr "" "Remailer aktiviert (veraltetes, Groß-/Kleinschreibung-unterscheidendes " "Format)" -#: uffd/templates/service/show.html:53 +#: uffd/templates/service/show.html:63 msgid "" "Some services notify users about changes to their e-mail address. " "Modifying this setting immediatly affects the e-mail addresses of all " @@ -1337,15 +1349,15 @@ msgstr "" "-Mail-Adressen aller Nutzer aus und kann zu massenhaftem Versand von " "Benachrichtigungs-E-Mails führen." -#: uffd/templates/service/show.html:59 +#: uffd/templates/service/show.html:69 msgid "Overwrite remailer setting for specific users" msgstr "Überschreibe Remailer-Einstellung für ausgewählte Nutzer" -#: uffd/templates/service/show.html:62 +#: uffd/templates/service/show.html:72 msgid "Login names" msgstr "Anmeldenamen" -#: uffd/templates/service/show.html:77 +#: uffd/templates/service/show.html:87 msgid "" "Useful for testing remailer before enabling it for all users. Specify " "users as a comma-seperated list of login names." @@ -1353,16 +1365,6 @@ msgstr "" "Hilfreich zum Testen des Remailers vor dem Aktivieren für alle Nutzer. Um" " Nutzer auszuwählen, liste ihre Anmeldenamen mit Komma getrennt auf." -#: uffd/templates/service/show.html:84 -msgid "Allow users to select a different e-mail address for this service" -msgstr "" -"Ermögliche Nutzern für diesen Dienst eine andere E-Mail-Adresse " -"auszuwählen" - -#: uffd/templates/service/show.html:86 -msgid "If disabled, the service always uses the primary e-mail address." -msgstr "Wenn deaktiviert, wird immer die primäre E-Mail-Adresse verwendet." - #: uffd/templates/session/deviceauth.html:15 msgid "Log into a service on another device without entering your password." msgstr "" diff --git a/uffd/views/selfservice.py b/uffd/views/selfservice.py index b4cbd4c826a061d6c995041fae56485fa836b352..3459d01adafaa0f1ce5fd43cc91d022e0011ced3 100644 --- a/uffd/views/selfservice.py +++ b/uffd/views/selfservice.py @@ -187,7 +187,7 @@ def update_email_preferences(): else: request.user.recovery_email = verified_emails.filter_by(id=request.form['recovery_email']).one() for service_user in request.user.service_users: - if not service_user.service.enable_email_preferences: + if not service_user.has_email_preferences: continue value = request.form.get(f'service_{service_user.service.id}_email', 'primary') if value == 'primary': diff --git a/uffd/views/user.py b/uffd/views/user.py index b3ba6788512544303d3d210e4cf043ff0c96d011..04fb953bb333aa3c3fdc0a8b3979aa87c305795b 100644 --- a/uffd/views/user.py +++ b/uffd/views/user.py @@ -113,7 +113,7 @@ def update(id): else: user.recovery_email = verified_emails.filter_by(id=request.form['recovery_email']).one() for service_user in user.service_users: - if not service_user.service.enable_email_preferences: + if not service_user.has_email_preferences: continue value = request.form.get(f'service_{service_user.service.id}_email', 'primary') if value == 'primary':