Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1ab2b60 authored by Akhil's avatar Akhil 🙂 Committed by AVINASH GUSAIN
Browse files

NC 32

parent 5aa797dc
Loading
Loading
Loading
Loading
+27 −24
Original line number Diff line number Diff line
FROM nextcloud:31.0.10-fpm AS nextcloud
FROM nextcloud:32.0.6-fpm AS nextcloud
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"

ARG CONTACTS_URL="https://gitlab.e.foundation/api/v4/projects/1238/packages/generic/contacts/v7.2.0+murena-20251111/contacts-v7.2.0+murena-20251111.tar.gz"
ARG CALENDAR_URL="https://gitlab.e.foundation/api/v4/projects/1199/packages/generic/calendar/v5.3.5+murena-20251016/calendar-v5.3.5+murena-20251016.tar.gz"
ARG THEME_HELPER_URL="https://gitlab.e.foundation/api/v4/projects/952/packages/generic/ecloud-theme-helper/v9.0.0/ecloud-theme-helper-v9.0.0.tar.gz"
ARG LAUNCHER_URL="https://gitlab.e.foundation/api/v4/projects/927/packages/generic/murena_launcher/v9.0.0/murena_launcher-v9.0.0.tar.gz"
ARG DASHBOARD_URL="https://gitlab.e.foundation/api/v4/projects/1195/packages/generic/murena-dashboard/v9.0.0/murena-dashboard-v9.0.0.tar.gz"
ARG SNAPPY_URL="https://gitlab.e.foundation/api/v4/projects/1367/packages/generic/snappymail/v2.38.2+murena-20251117/snappymail-v2.38.2+murena-20251117.tar.gz"
ARG OIDC_LOGIN_URL="https://gitlab.e.foundation/api/v4/projects/1496/packages/generic/oidc_login/v3.2.2+murena-20251028/oidc_login-v3.2.2+murena-20251028.tar.gz"
ARG CONTACTS_URL="https://gitlab.e.foundation/api/v4/projects/1238/packages/generic/contacts/v7.3.12+murena-20260325/contacts-v7.3.12+murena-20260325.tar.gz"
ARG CALENDAR_URL="https://gitlab.e.foundation/api/v4/projects/1199/packages/generic/calendar/v5.5.11+murena-20260107/calendar-v5.5.11+murena-20260107.tar.gz"
ARG THEME_HELPER_URL="https://gitlab.e.foundation/api/v4/projects/952/packages/generic/ecloud-theme-helper/v11.0.0-beta.1/ecloud-theme-helper-v11.0.0-beta.1.tar.gz"
ARG LAUNCHER_URL="https://gitlab.e.foundation/api/v4/projects/927/packages/generic/murena_launcher/v10.0.0-beta/murena_launcher-v10.0.0-beta.tar.gz"
ARG DASHBOARD_URL="https://gitlab.e.foundation/api/v4/projects/1195/packages/generic/murena-dashboard/v10.0.0-beta/murena-dashboard-v10.0.0-beta.tar.gz"
ARG SNAPPY_URL="https://gitlab.e.foundation/api/v4/projects/1367/packages/generic/snappymail/v2.38.2+murena-20260322/snappymail-v2.38.2+murena-20260322.tar.gz"
ARG OIDC_LOGIN_URL="https://gitlab.e.foundation/api/v4/projects/1496/packages/generic/oidc_login/v3.2.2+murena-20260323/oidc_login-v3.2.2+murena-20260323.tar.gz"
ARG SNAPPY_THEME_VERSION="https://gitlab.e.foundation/api/v4/projects/1377/packages/generic/snappymail/v4.0.5/snappymail-v4.0.5.tar.gz"
ARG EA_URL="https://gitlab.e.foundation/api/v4/projects/648/packages/generic/ecloud-accounts/v13.0.0/ecloud-accounts-v13.0.0.tar.gz"
ARG EMAIL_RECOVERY_URL="https://gitlab.e.foundation/api/v4/projects/868/packages/generic/email-recovery/v12.2.0/email-recovery-v12.2.0.tar.gz"
ARG USER_MIGRATION_URL="https://gitlab.e.foundation/api/v4/projects/1468/packages/generic/user_migration/8.0.0+murena-20251020/user_migration-8.0.0+murena-20251020.tar.gz"
ARG EA_URL="https://gitlab.e.foundation/api/v4/projects/648/packages/generic/ecloud-accounts/v14.0.0-beta/ecloud-accounts-v14.0.0-beta.tar.gz"
ARG EMAIL_RECOVERY_URL="https://gitlab.e.foundation/api/v4/projects/868/packages/generic/email-recovery/v13.0.0-beta/email-recovery-v13.0.0-beta.tar.gz"
ARG USER_MIGRATION_URL="https://gitlab.e.foundation/api/v4/projects/1468/packages/generic/user_migration/8.0.0+murena-20251216/user_migration-8.0.0+murena-20251216.tar.gz"

ARG NOTES_URL="https://github.com/nextcloud-releases/notes/releases/download/v4.11.0/notes-v4.11.0.tar.gz"
ARG MEMORIES_URL="https://github.com/pulsejet/memories/releases/download/v7.5.2/memories.tar.gz"
ARG NOTES_URL="https://github.com/nextcloud-releases/notes/releases/download/v4.13.1/notes-v4.13.1.tar.gz"
ARG MEMORIES_URL="https://github.com/pulsejet/memories/releases/download/v7.8.2/memories.tar.gz"
ARG DROP_ACCOUNT_URL="https://packages.framasoft.org/projects/nextcloud-apps/drop-account/drop_account-2.7.1.tar.gz"
ARG GOOGLE_INTEGRATION_URL="https://github.com/nextcloud-releases/integration_google/releases/download/v4.2.0/integration_google-v4.2.0.tar.gz"

RUN sed -i 's/31,0,10,2/31,0,10,11/' ${BASE_DIR}/version.php
RUN sed -i 's/32,0,6,1/32,0,6,10/' ${BASE_DIR}/version.php
COPY custom_entrypoint.sh /
RUN chmod +x /custom_entrypoint.sh
RUN mkdir -p /var/www/skeleton/Documents && mkdir -p /var/www/skeleton/Images
@@ -74,7 +74,7 @@ RUN apt-get -y remove unzip
RUN sed -i "s/\$systemConfig->setValue('theme', '');/\$systemConfig->setValue('theme', 'eCloud');/g" ${BASE_DIR}/lib/base.php

# Disable editor feature of media viewer
RUN sed -i 's/canEdit(){return!this.isMobile\&\&L()/canEdit(){return!this.isMobile\&\&false\&\&L()/' ${BASE_DIR}/apps/viewer/js/viewer-main.mjs
RUN sed -i 's/canEdit(){return!this.isMobile\&\&this.canDownload/canEdit(){return!this.isMobile\&\&false\&\&this.canDownload/' ${BASE_DIR}/apps/viewer/js/viewer-main.mjs


ENTRYPOINT ["/custom_entrypoint.sh"]
@@ -107,6 +107,7 @@ RUN patch -u ${BASE_DIR}/lib/private/Template/JSResourceLocator.php -i ${TMP_PAT
RUN patch -u ${BASE_DIR}/lib/private/L10N/Factory.php -i ${TMP_PATCH_DIR}/032-select-lang-from-session.patch
# UserConfigChangedEvent Ref: https://github.com/nextcloud/server/pull/42039
RUN cd ${BASE_DIR} && patch -p1 < ${TMP_PATCH_DIR}/036-user-config-change-event.patch
RUN patch -u ${BASE_DIR}/custom_apps/integration_google/lib/Service/GoogleDriveAPIService.php -i ${TMP_PATCH_DIR}/039-fix-slow-google-import-job.patch

RUN rm -rf ${TMP_PATCH_DIR}

@@ -141,8 +142,8 @@ RUN sed -i 's/ in Nextcloud/ /' ${BASE_DIR}/custom_apps/integration_google/js/in
RUN sed -i 's/Nextcloud administrator/administrator/' ${BASE_DIR}/custom_apps/integration_google/js/integration_google-personalSettings.mjs


# Fix the navbar entries
RUN sed -i 's/this.appLimit=e/this.appLimit=this.appList.length/' ${BASE_DIR}/dist/core-main.js
# Fix the navbar entries - Not needed in NC 30 & onward
#RUN sed -i 's/this.appLimit=e/this.appLimit=this.appList.length/' ${BASE_DIR}/dist/core-main.js

# Fix total quota value for users in settings and files
RUN sed -i "s/'total'/'quota'/" ${BASE_DIR}/apps/settings/lib/Settings/Personal/PersonalInfo.php
@@ -154,8 +155,8 @@ RUN sed -i "s/\['total'\]/\['quota'\]/" ${BASE_DIR}/apps/provisioning_api/lib/Co
From selfhost as ecloud
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
ARG THEME_VERSION="https://gitlab.e.foundation/api/v4/projects/315/packages/generic/eCloud/v31.0.3/eCloud-v31.0.3.tar.gz"
ARG LDAP_WRITE_SUPPORT_VERSION="1.13.0"
ARG THEME_VERSION="https://gitlab.e.foundation/api/v4/projects/315/packages/generic/eCloud/v32.0.1/eCloud-v32.0.1.tar.gz"
ARG LDAP_WRITE_SUPPORT_VERSION="1.14.0"
ARG IS_SELFHOST=false

RUN curl -fsSL -o ldap_write_support.tar.gz \
@@ -173,12 +174,12 @@ RUN patch -u ${BASE_DIR}/lib/private/Notification/Manager.php -i ${TMP_PATCH_DIR
#RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/apps/user_ldap/lib/User_LDAP.php -i ${TMP_PATCH_DIR}/023-ldap-check-pwd-optimization.patch - already added in nc31
RUN patch -u ${BASE_DIR}/lib/private/User/Manager.php -i ${TMP_PATCH_DIR}/025-optimize-get-by-email.patch
RUN patch -u ${BASE_DIR}/apps/dav/lib/Connector/Sabre/Principal.php -i ${TMP_PATCH_DIR}/027-displayname-user-leak-dav.patch
RUN patch -u ${BASE_DIR}/apps/dav/lib/HookManager.php -i ${TMP_PATCH_DIR}/028-default-task-calendar.patch
RUN patch -u ${BASE_DIR}/apps/dav/lib/Listener/UserEventsListener.php -i ${TMP_PATCH_DIR}/028-default-task-calendar.patch
RUN patch -u ${BASE_DIR}/apps/provisioning_api/lib/Controller/UsersController.php -i ${TMP_PATCH_DIR}/029-restrict-user-to-change-primary-email.patch
RUN patch -u ${BASE_DIR}/lib/private/Security/VerificationToken/VerificationToken.php -i ${TMP_PATCH_DIR}/033-verification-token-private.patch
RUN patch -u ${BASE_DIR}/lib/private/AppFramework/Middleware/Security/CORSMiddleware.php -i ${TMP_PATCH_DIR}/034-oidc-bearer-token-auth.patch
#RUN patch -u ${BASE_DIR}/custom_apps/snappymail/app/snappymail/v/2.38.2+murena-20251112/app/libraries/RainLoop/Actions/Contacts.php -i ${TMP_PATCH_DIR}/037-snappymail-contact.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/038-appdata-folder-based-on-config.patch
#RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/038-appdata-folder-based-on-config.patch
RUN rm -rf ${TMP_PATCH_DIR}


@@ -192,7 +193,7 @@ RUN sed -i 's/$this->getAvatarImage($user)/null/' ${BASE_DIR}/apps/dav/lib/CardD
# RUN cd ${BASE_DIR}/dist && sed -i 's/resetPassword:!1/resetPassword:!1||Z.showResetPassword==="1"/' core-login.js

# add attr about how many notifications to notif icon
RUN sed -i 's/attrs:{id:"notifications",/attrs:{id:"notifications","data-has-notifications":0!==u.notifications.length,/' ${BASE_DIR}/apps/notifications/js/NotificationsApp-CL5l4zBd.chunk.mjs
RUN sed -i 's/key:0,id:"notifications",/key:0,id:"notifications","data-has-notifications":0!==i.notifications.length,/' ${BASE_DIR}/apps/notifications/js/NotificationsApp-hrGoV45R.chunk.mjs

# Rename Memories to Gallery
RUN sed -i 's/<name>Memories<\/name>/<name>Gallery<\/name>/g' ${BASE_DIR}/custom_apps/memories/appinfo/info.xml
@@ -205,7 +206,9 @@ RUN cd ${BASE_DIR}/custom_apps/memories/js && sed -i 's/Memories Settings/Galler
RUN cd ${BASE_DIR}/custom_apps/calendar && sed -i 's/"GROUP","INDIVIDUAL"/"INDIVIDUAL"/g' js/calendar-main.js
RUN cd ${BASE_DIR}/custom_apps/calendar && sed -i 's/{name:\[a,"displayname"\]},//' js/calendar-main.js
RUN cd ${BASE_DIR}/custom_apps/notes && sed -i 's/<step>OCA\\Notes\\Migration\\EditorHint<\/step>//g' appinfo/info.xml
RUN cd ${BASE_DIR}/apps/theming && sed -i 's/<step>OCA\\Theming\\Migration\\MigrateUserConfig<\/step>//g' appinfo/info.xml

# Not needed for NC-32 
#RUN cd ${BASE_DIR}/apps/theming && sed -i 's/<step>OCA\\Theming\\Migration\\MigrateUserConfig<\/step>//g' appinfo/info.xml

# sharing search by email
#RUN cd ${BASE_DIR}/custom_apps/contacts && sed -i 's/kM.principalPropertySearchByDisplayname(t);/kM.principalPropertySearch(\[{name:\["http:\/\/sabredav.org\/ns","email-address"\]\}],t,"anyof");/g' js/contacts-main.js
@@ -221,7 +224,7 @@ RUN sed -i 's/$this->changeAvatar/\/\/ $this->changeAvatar/' ${BASE_DIR}/custom_
RUN sed -i '/<step>OCA\\DAV\\Migration\\CalDAVRemoveEmptyValue<\/step>/d' ${BASE_DIR}/apps/dav/appinfo/info.xml

# Hide `Play sound when a call started (requires Nextcloud Talk)` checkbox from notification setting
RUN sed -i 's/attrs:{checked:r\.config\.sound_talk}/staticClass:"notification_talk",attrs:{checked:r\.config\.sound_talk}/g' ${BASE_DIR}/apps/notifications/js/notifications-settings.mjs
RUN sed -i 's/c\.config\.sound_talk=p),l\.updateSettings]/c\.config\.sound_talk=p),l\.updateSettings],class:"notification_talk"/g' ${BASE_DIR}/apps/notifications/js/notifications-settings.mjs

# Hide `Navigation bar settings` from theming
RUN sed -i 's/{attrs:{name:t.t("theming","Navigation bar settings")}}/{staticClass:"navigation-bar-settings",attrs:{name:t.t("theming","Navigation bar settings")}}/g' ${BASE_DIR}/dist/theming-personal-theming.js
+11 −11
Original line number Diff line number Diff line
@@ -7,9 +7,9 @@ This patch auto append the domain handled by nc, configured in env var.
only the admin user (also configured in env var) will not have his login appended with a @domain suffix

diff --git ./core/Controller/LoginController.php ./core/Controller/LoginController-new.php
--- ./core/Controller/LoginController.php	2024-04-26 15:08:54.979407062 +0530
+++ ./core/Controller/LoginController-new.php	2024-04-26 15:16:48.582366408 +0530
@@ -315,6 +315,27 @@
--- ./core/Controller/LoginController.php	2026-03-23 17:46:38.368004410 +0600
+++ ./core/Controller/LoginController-new.php	2026-03-23 17:56:15.665110462 +0600
@@ -341,6 +341,27 @@
 			);
 		}
 
@@ -37,7 +37,7 @@ diff --git ./core/Controller/LoginController.php ./core/Controller/LoginControll
 		$data = new LoginData(
 			$this->request,
 			$user,
@@ -327,7 +348,7 @@
@@ -354,7 +375,7 @@
 		if (!$result->isSuccess()) {
 			return $this->createLoginFailedResponse(
 				$data->getUsername(),
@@ -47,8 +47,8 @@ diff --git ./core/Controller/LoginController.php ./core/Controller/LoginControll
 				$result->getErrorMessage()
 			);

--- ./core/Controller/WebAuthnController.php	2023-04-21 15:18:58.813220092 +0530
+++ ./core/Controller/WebAuthnController-new.php	2023-04-21 15:24:40.036538414 +0530
--- ./core/Controller/WebAuthnController.php	2026-03-23 18:12:33.546326153 +0600
+++ ./core/Controller/WebAuthnController-new.php	2026-03-23 18:12:26.157698882 +0600
@@ -48,6 +48,27 @@
 
 		$this->logger->debug('Converting login name to UID');
@@ -78,9 +78,9 @@ diff --git ./core/Controller/LoginController.php ./core/Controller/LoginControll
 			'\OCA\Files_Sharing\API\Server2Server',
 			'preLoginNameUsedAsUserName',

--- ./lib/private/User/Session.php	2023-04-21 15:27:00.417034490 +0530
+++ ./lib/private/User/Session-new.php	2023-04-21 15:28:18.309111435 +0530
@@ -383,6 +383,10 @@
--- ./lib/private/User/Session.php	2026-03-23 17:46:39.585001447 +0600
+++ ./lib/private/User/Session-new.php	2026-03-23 17:59:52.577453313 +0600
@@ -384,6 +384,10 @@
 		$remoteAddress = $request->getRemoteAddress();
 		$currentDelay = $throttler->sleepDelayOrThrowOnMax($remoteAddress, 'login');
 
+3 −3
Original line number Diff line number Diff line
@@ -5,10 +5,10 @@ Subject: [PATCH] remove user search icon in header tab
This patch removes the top right icon enabling the global user search function available to all in nextcloud.

diff --git layout.user.php layout.user.php-new
--- ./core/templates/layout.user.php	2023-03-28 14:54:05.873566570 +0530
+++ ./core/templates/layout.user-new.php	2023-03-28 14:54:35.044218831 +0530
--- ./core/templates/layout.user.php	2026-03-23 17:46:38.739003512 +0600
+++ ./core/templates/layout.user-new.php	2026-03-24 10:20:10.404364930 +0600
@@ -76,7 +76,6 @@
 			<div class="header-right">
 			<div class="header-end">
 				<div id="unified-search"></div>
 				<div id="notifications"></div>
-				<div id="contactsmenu"></div>
+21 −26
Original line number Diff line number Diff line
@@ -14,22 +14,20 @@ this filtering works in conjunction with the autocomplete feature disabled in ne
diff --git lib/private/Collaboration/Collaborators/UserPlugin.php lib/private/Collaboration/Collaborators/UserPlugin-new.php
--- lib/private/Collaboration/Collaborators/UserPlugin.php	2025-02-13 19:30:40
+++ lib/private/Collaboration/Collaborators/UserPlugin-new.php	2025-03-07 12:48:50
@@ -159,8 +159,8 @@
 				&& $lowerSearch !== ''
 				&& (
 					strtolower($uid) === $lowerSearch
-					|| strtolower($userDisplayName) === $lowerSearch
-					|| ($this->shareeEnumerationFullMatchIgnoreSecondDisplayName && trim(strtolower(preg_replace('/ \(.*\)$/', '', $userDisplayName))) === $lowerSearch)
+					//|| strtolower($userDisplayName) === $lowerSearch
+					//|| ($this->shareeEnumerationFullMatchIgnoreSecondDisplayName && trim(strtolower(preg_replace('/ \(.*\)$/', '', $userDisplayName))) === $lowerSearch)
 					|| ($this->shareeEnumerationFullMatchEmail && strtolower($userEmail ?? '') === $lowerSearch)
 				)
 			) {
@@ -90,7 +90,7 @@
 			$lowerSearch = mb_strtolower($search);
 
 			// Re-use the results from earlier if possible
-			$usersByDisplayName ??= $this->userManager->searchDisplayName($search, $limit, $offset);
+			$usersByDisplayName = [];
 			foreach ($usersByDisplayName as $user) {
 				if ($user->isEnabled() && (mb_strtolower($user->getDisplayName()) === $lowerSearch || ($shareeEnumerationFullMatchIgnoreSecondDisplayName && trim(mb_strtolower(preg_replace('/ \(.*\)$/', '', $user->getDisplayName()))) === $lowerSearch))) {
 					$users[$user->getUID()] = ['exact', $user];

diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Collaboration/Collaborators/MailPlugin-new.php
--- lib/private/Collaboration/Collaborators/MailPlugin.php	2025-02-13 19:30:40
+++ lib/private/Collaboration/Collaborators/MailPlugin-new.php	2025-03-07 12:55:25
@@ -18,6 +18,7 @@
@@ -19,6 +19,7 @@
 use OCP\IUserSession;
 use OCP\Mail\IMailer;
 use OCP\Share\IShare;
@@ -37,18 +35,15 @@ diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Co
 
 class MailPlugin implements ISearchPlugin {
 	protected bool $shareWithGroupOnly;
@@ -40,8 +41,10 @@
 		private KnownUserService $knownUserService,
 		private IUserSession $userSession,
 		private IMailer $mailer,
+		private IUserManager $userManager,
 		private mixed $shareWithGroupOnlyExcludeGroupsList = [],
 	) {
+		$this->userManager = $userManager;
 		$this->shareeEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
 		$this->shareWithGroupOnly = $this->config->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes';
 		$this->shareeEnumerationInGroupOnly = $this->shareeEnumeration && $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
@@ -200,27 +203,63 @@
@@ -60,6 +61,7 @@
 	 * {@inheritdoc}
 	 */
 	public function search($search, $limit, $offset, ISearchResult $searchResult): bool {
+		$userManager = \OC::$server->get(IUserManager::class);
 		if ($this->shareeEnumerationFullMatch && !$this->shareeEnumerationFullMatchEmail) {
 			return false;
 		}
@@ -211,27 +213,63 @@
 						if ($exactEmailMatch) {
 							$searchResult->markExactIdMatch($emailType);
 						}
@@ -62,7 +57,7 @@ diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Co
-								'shareWith' => $emailAddress,
-							],
-						];
+						$isUserinInstance = $this->userManager->get($emailAddress);
+						$isUserinInstance = $userManager->get($emailAddress);
+						if ($isUserinInstance === null) {
+							// /e/ user is not in ecloud
+							$result['exact'][] = [
@@ -101,7 +96,7 @@ diff --git lib/private/Collaboration/Collaborators/MailPlugin.php lib/private/Co
-								'shareWith' => $emailAddress,
-							],
-						];
+						$isUserinInstance = $this->userManager->get($emailAddress);
+						$isUserinInstance = $userManager->get($emailAddress);
+						if ($isUserinInstance === null) {
+							// /e/ user is not in ecloud
+							$result['wide'][] = [
+6 −8
Original line number Diff line number Diff line
--- ./core/Controller/LostController.php	2023-05-05 18:38:07.080445742 +0530
+++ ./core/Controller/LostController-new.php	2023-05-05 18:48:27.385043088 +0530
@@ -126,7 +126,24 @@
--- ./core/Controller/LostController.php	2026-03-23 17:46:38.368004410 +0600
+++ ./core/Controller/LostController-new.php	2026-03-23 19:00:49.176323284 +0600
@@ -127,7 +127,23 @@
 	protected function checkPasswordResetToken(string $token, string $userId): void {
 		try {
 			$user = $this->userManager->get($userId);
@@ -22,12 +22,11 @@
+			$user = $this->userManager->get($userId);
+			$recoveryEmail = $this->config->getUserValue($userId, 'email-recovery', 'recovery-email', '');
+			$this->verificationToken->check($token, $user, 'lostpassword', $user ? $recoveryEmail : '', true);
+
 		} catch (InvalidTokenException $e) {
 			$error = $e->getCode() === InvalidTokenException::TOKEN_EXPIRED
 				? $this->l10n->t('Could not reset password because the token is expired')
@@ -236,9 +253,22 @@
 	 * @throws \OCP\PreConditionNotMetException
@@ -237,9 +253,23 @@
 	 * @throws PreConditionNotMetException
 	 */
 	protected function sendEmail(string $input): void {
+		$legacyDomain = $this->config->getSystemValue('legacy_domain', '');
@@ -45,9 +44,8 @@
+		}
 		$user = $this->findUserByIdOrMail($input);
 		$email = $user->getEMailAddress();
-
 
+		$email = $this->config->getUserValue($user->getUID(), 'email-recovery', 'recovery-email', '');
 		if (empty($email)) {
 			throw new ResetPasswordException('Could not send reset e-mail since there is no email for username ' . $input);
 		}
Loading