From ac2367fc0b96313831011841eced3a2d69444b7b Mon Sep 17 00:00:00 2001
From: Rasmus Fuhse <fuhse@data-quest.de>
Date: Fri, 5 Jul 2024 06:27:19 +0000
Subject: [PATCH] Draft: Resolve "Neues-Passwort-Mail ist falsch"

Closes #4368

Merge request studip/studip!3166
---
 app/controllers/new_password.php | 56 +++++++++++++++++---------------
 1 file changed, 30 insertions(+), 26 deletions(-)

diff --git a/app/controllers/new_password.php b/app/controllers/new_password.php
index 1e58659ed9a..3a6e6419a9a 100644
--- a/app/controllers/new_password.php
+++ b/app/controllers/new_password.php
@@ -41,32 +41,36 @@ class NewPasswordController extends StudipController
 
         $users = User::findByEmail(Request::get('mail'));
 
-        $user = $users[0];
-        setTempLanguage($user->id);
-
-        // there are mutliple accounts with this mail addresses!
-        $subject = sprintf(
-            _("[Stud.IP - %s] Passwortänderung angefordert"),
-            Config::get()->UNI_NAME_CLEAN
-        );
-
-        $mailbody = sprintf(
-            _("Dies ist eine Informationsmail des Stud.IP-Systems\n"
-                ."(Studienbegleitender Internetsupport von Präsenzlehre)\n- %s -\n\n"
-                . "Für die Mail-Adresse %s wurde ein Link angefordert\n"
-                . "um das Passwort zurückzusetzen.\n"
-                . "Dieser Mail-Adresse sind jedoch mehrere Zugänge zugeordnet,\n"
-                . "deshalb ist es nicht möglich, das Passwort hierüber zurückzusetzen.\n"
-                . "Wenden sie sich bitte stattdessen an\n%s"
-            ),
-            Config::get()->UNI_NAME_CLEAN,
-            $users[0]->email,
-            $GLOBALS['UNI_CONTACT']
-        );
-
-        StudipMail::sendMessage($user->email, $subject, $mailbody);
-
-        restoreLanguage();
+        if (count($users) === 1) {
+            $user = $users[0];
+        } else if (count($users) > 1) {
+            setTempLanguage($users[0]->id);
+
+            // there are mutliple accounts with this mail addresses!
+            $subject = sprintf(
+                _("[Stud.IP - %s] Passwortänderung angefordert"),
+                Config::get()->UNI_NAME_CLEAN
+            );
+
+            $mailbody = sprintf(
+                _("Dies ist eine Informationsmail des Stud.IP-Systems\n"
+                    ."(Studienbegleitender Internetsupport von Präsenzlehre)\n- %s -\n\n"
+                    . "Für die Mail-Adresse %s wurde ein Link angefordert\n"
+                    . "um das Passwort zurückzusetzen.\n"
+                    . "Dieser Mail-Adresse sind jedoch mehrere Zugänge zugeordnet,\n"
+                    . "deshalb ist es nicht möglich, das Passwort hierüber zurückzusetzen.\n"
+                    . "Wenden sie sich bitte stattdessen an\n%s"
+                ),
+                Config::get()->UNI_NAME_CLEAN,
+                $users[0]->email,
+                $GLOBALS['UNI_CONTACT']
+            );
+
+            StudipMail::sendMessage($users[0]->email, $subject, $mailbody);
+
+            restoreLanguage();
+        }
+
         if ($user) {
             // spam/abuse-protection
             // if there are more than 5 tokens present, do NOT send another mail
-- 
GitLab