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

Commit a53fc659 authored by AVINASH GUSAIN's avatar AVINASH GUSAIN
Browse files

Merge branch 'dev/nc-31' into 'main'

NC 31 image added

See merge request !278
parents 076862ab 865d416a
Loading
Loading
Loading
Loading
Loading
+62 −123
Original line number Diff line number Diff line
FROM nextcloud:30.0.14-fpm AS nextcloud
FROM nextcloud:31.0.9-fpm AS nextcloud
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
ARG THEME_HELPER_JOB_ID="1330034"
ARG NOTES_VERSION="4.11.0"
ARG CONTACTS_JOB_ID="1313223"
ARG CALENDAR_JOB_ID="1330379"
ARG EMAIL_RECOVERY_JOB_ID="1313239"
ARG EA_JOB_ID="1317005"
ARG LAUNCHER_JOB_ID="1330025"
ARG GOOGLE_INTEGRATION_VERSION="3.2.0"
ARG DASHBOARD_JOB_ID="1313279"
ARG SNAPPY_VERSION="2.37.2"
ARG SNAPPY_THEME_VERSION="4.0.5"
ARG USER_MIGRATION_JOB_ID="1313296"
ARG MEMORIES_VERSION="7.5.2"
ARG DROP_ACCOUNT_VERSION="2.7.1"

RUN sed -i 's/30,0,14,1/30,0,14,11/' ${BASE_DIR}/version.php

ARG CONTACTS_URL="https://gitlab.e.foundation/api/v4/projects/1238/packages/generic/contacts/v7.2.0+murena-20250926/contacts-v7.2.0+murena-20250926.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-20250822/snappymail-v2.38.2+murena-20250822.tar.gz"
ARG OIDC_LOGIN_URL="https://gitlab.e.foundation/api/v4/projects/1496/packages/generic/oidc_login/3.2.2+murena-20250822/oidc_login-3.2.2+murena-20250822.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/12.0.0/email-recovery-12.0.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 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 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/integration_google/releases/download/v1.0.9/integration_google-1.0.9.tar.gz"

RUN sed -i 's/31,0,9,1/31,0,9,9/' ${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
# Install unzip for unzipping artifacts
RUN apt-get update && apt-get install -y unzip ffmpeg

RUN curl -fsSL -o notes.tar.gz \
  "https://github.com/nextcloud-releases/notes/releases/download/v${NOTES_VERSION}/notes-v${NOTES_VERSION}.tar.gz" && \
  tar -xf notes.tar.gz -C ${BASE_DIR}/custom_apps/ && \
  rm notes.tar.gz;

# custom Contact
RUN curl -fsSL -o contacts.zip \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/contacts/-/jobs/${CONTACTS_JOB_ID}/artifacts/download" && \
  unzip contacts.zip && \
  mv dist/contacts ${BASE_DIR}/custom_apps/ && \
  rm contacts.zip;

RUN curl -fsSL -o calendar.zip \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/calendar/-/jobs/${CALENDAR_JOB_ID}/artifacts/download" && \
  unzip calendar.zip && \
  mv dist/calendar ${BASE_DIR}/custom_apps/ && \
  rm calendar.zip;

RUN curl -fsSL -o email-recovery.zip \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/email-recovery/-/jobs/${EMAIL_RECOVERY_JOB_ID}/artifacts/download" && \
  unzip email-recovery.zip && \
  mv dist/email-recovery ${BASE_DIR}/custom_apps/ && \
  rm email-recovery.zip;


RUN curl -fsSL -o ecloud-theme-helper.zip \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/ecloud-theme-helper/-/jobs/${THEME_HELPER_JOB_ID}/artifacts/download" && \
  unzip ecloud-theme-helper.zip && \
  mv dist/ecloud-theme-helper ${BASE_DIR}/custom_apps/ && \
  rm ecloud-theme-helper.zip;

RUN curl -fsSL -o murena_launcher.zip \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/launcher/-/jobs/${LAUNCHER_JOB_ID}/artifacts/download" && \
  unzip murena_launcher.zip && \
  mv dist/murena_launcher ${BASE_DIR}/custom_apps/ && \
  rm murena_launcher.zip;

RUN curl -fsSL -o integration_google.tar.gz \
  "https://github.com/nextcloud-releases/integration_google/releases/download/v${GOOGLE_INTEGRATION_VERSION}/integration_google-v${GOOGLE_INTEGRATION_VERSION}.tar.gz" && \
  tar -xf integration_google.tar.gz -C ${BASE_DIR}/custom_apps/ && \
  chown -R www-data:www-data ${BASE_DIR}/custom_apps/integration_google && \
  rm integration_google.tar.gz;

RUN curl -fsSL -o ecloud-accounts.zip \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/ecloud-accounts/-/jobs/${EA_JOB_ID}/artifacts/download" && \
  unzip ecloud-accounts.zip && \
  mv dist/ecloud-accounts ${BASE_DIR}/custom_apps/ && \
  rm ecloud-accounts.zip;

RUN curl -fsSL -o ecloud-dashboard.zip \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/murena-dashboard/-/jobs/${DASHBOARD_JOB_ID}/artifacts/download" && \
  unzip ecloud-dashboard.zip && \
  mv dist/murena-dashboard ${BASE_DIR}/custom_apps/ && \
  rm ecloud-dashboard.zip;

#RUN curl -fsSL -o snappymail.tar.gz \
#  "https://snappymail.eu/repository/nextcloud/snappymail-${SNAPPY_VERSION}-nextcloud.tar.gz" && \
#  tar -xf snappymail.tar.gz -C ${BASE_DIR}/custom_apps/ && \
#  rm snappymail.tar.gz;

RUN curl -fsSL -o user_migration.zip \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/user_migration/-/jobs/${USER_MIGRATION_JOB_ID}/artifacts/download" && \
  unzip user_migration.zip && \
  mv dist/user_migration ${BASE_DIR}/custom_apps/ && \
  rm user_migration.zip;

RUN rm -rf ${BASE_DIR}/core/skeleton/* ${BASE_DIR}/themes/example \
 && mkdir -p ${BASE_DIR}/core/skeleton/Documents \
 && mkdir -p ${BASE_DIR}/core/skeleton/Images \
 && mkdir -p ${BASE_DIR}/themes/Murena

# Install unzip for unzipping artifacts
RUN apt-get update && apt-get install -y unzip ffmpeg syslog-ng

# Murena apps
RUN curl -sL ${CONTACTS_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${CALENDAR_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${THEME_HELPER_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${LAUNCHER_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${DASHBOARD_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${SNAPPY_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${OIDC_LOGIN_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${EA_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${EMAIL_RECOVERY_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${USER_MIGRATION_URL} | tar xzf - -C ${BASE_DIR}/custom_apps

# External apps
RUN curl -sL ${NOTES_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${MEMORIES_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${DROP_ACCOUNT_URL} | tar xzf - -C ${BASE_DIR}/custom_apps
RUN curl -sL ${GOOGLE_INTEGRATION_URL} | tar xzf - -C ${BASE_DIR}/custom_apps

# Fix snappymail icon
#RUN sed -i 's/logo-white-64x64.png/app.svg/' ${BASE_DIR}/custom_apps/snappymail/appinfo/info.xml
@@ -96,24 +60,7 @@ RUN curl -fsSL -o user_migration.zip \
#RUN sed -i "s/'additional'/null/" ${BASE_DIR}/custom_apps/snappymail/lib/Settings/PersonalSettings.php

# Snappy theme
#RUN curl -fsSL -o Murena-snappymail-theme.tar.gz \
#  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/snappymail-theme/-/archive/${SNAPPY_THEME_VERSION}/snappymail-theme-${SNAPPY_THEME_VERSION}.tar.gz" && \
#  tar -xf Murena-snappymail-theme.tar.gz -C /tmp/ && \
#  mkdir -p ${BASE_DIR}/themes/Murena && \
#  mv /tmp/snappymail-theme-${SNAPPY_THEME_VERSION}/ ${BASE_DIR}/themes/Murena/snappymail && \
#  chown -R www-data:www-data ${BASE_DIR}/themes/Murena/ && \
#  rm -rf Murena-snappymail-theme.tar.gz

RUN curl -fsSL -o memories.tar.gz \
  "https://github.com/pulsejet/memories/releases/download/v${MEMORIES_VERSION}/memories.tar.gz" && \
  tar -xf memories.tar.gz -C ${BASE_DIR}/custom_apps/ && \
  rm memories.tar.gz;

RUN curl -fsSL -o drop_account.tar.gz \
  "https://packages.framasoft.org/projects/nextcloud-apps/drop-account/drop_account-${DROP_ACCOUNT_VERSION}.tar.gz" && \
  tar -xf drop_account.tar.gz -C ${BASE_DIR}/custom_apps/ && \
  rm drop_account.tar.gz;

RUN curl -sL ${SNAPPY_THEME_VERSION} | tar xzf - -C ${BASE_DIR}/themes/Murena/


# Remove unzip when unzipping is done
@@ -132,7 +79,7 @@ CMD ["php-fpm"]
From nextcloud as selfhost
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
ARG THEME_VERSION="26.0.2"
ARG THEME_VERSION="https://gitlab.e.foundation/api/v4/projects/315/packages/generic/eCloud/v26.0.2/eCloud-v26.0.2.tar.gz"
#ARG USER_BACKEND_RAW_SQL_VERSION="2.0.1"
ARG SELFHOST_THEME_VERSION="2.0.0"
ARG IS_SELFHOST=true
@@ -149,7 +96,7 @@ RUN patch -u ${BASE_DIR}/lib/private/Authentication/Token/PublicKeyTokenProvider
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/014-add-mail-usage.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/015-email-mail-template.patch
RUN patch -u ${BASE_DIR}/core/Command/User/Setting.php -i ${TMP_PATCH_DIR}/018-occ-user-setting.patch
RUN patch -u ${BASE_DIR}/apps/files/js/files.js -i ${TMP_PATCH_DIR}/021-repeated-storage-dialog-fix.patch
#RUN patch -u ${BASE_DIR}/apps/files/js/files.js -i ${TMP_PATCH_DIR}/021-repeated-storage-dialog-fix.patch
RUN cd ${BASE_DIR} && patch -u ${BASE_DIR}/3rdparty/sabre/vobject/lib/ITip/Broker.php -i ${TMP_PATCH_DIR}/022-significantchange.patch
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/026-primary-color-fix.patch
RUN patch -u ${BASE_DIR}/lib/private/Template/JSResourceLocator.php -i ${TMP_PATCH_DIR}/031-theme-custom-app-translations.patch
@@ -160,12 +107,8 @@ RUN cd ${BASE_DIR} && patch -p1 < ${TMP_PATCH_DIR}/036-user-config-change-event.
RUN rm -rf ${TMP_PATCH_DIR}

# Custom theme
RUN curl -fsSL -o eCloud-theme.tar.gz \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/nextcloud-theme/-/archive/${THEME_VERSION}/nextcloud-theme-${THEME_VERSION}.tar.gz" && \
  tar -xf eCloud-theme.tar.gz -C /tmp/ && \
  mv /tmp/nextcloud-theme-${THEME_VERSION}/ ${BASE_DIR}/themes/eCloud && \
  chown -R www-data:www-data ${BASE_DIR}/themes/eCloud/ && \
  rm -rf eCloud-theme.tar.gz ${BASE_DIR}/themes/example/
RUN curl -sL ${THEME_VERSION} | tar xzf - -C ${BASE_DIR}/themes


# User Backend
#RUN curl -fsSL -o user_backend_sql_raw.tar.gz \
@@ -198,16 +141,16 @@ RUN sed -i 's/this.appLimit=e/this.appLimit=this.appList.length/' ${BASE_DIR}/di

# 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
RUN sed -i "s/\['total'\]/\['quota'\]/" ${BASE_DIR}/apps/provisioning_api/lib/Controller/AUserData.php
RUN sed -i "s/\['total'\]/\['quota'\]/" ${BASE_DIR}/apps/provisioning_api/lib/Controller/AUserDataOCSController.php

# Fix API call in files script
RUN sed -i "s/ajax\/getstoragestats/api\/v1\/stats/g" ${BASE_DIR}/apps/files/js/files.js
# Fix API call in files script -Not needed in NC 31
#RUN sed -i "s/ajax\/getstoragestats/api\/v1\/stats/g" ${BASE_DIR}/apps/files/js/files.js

From selfhost as ecloud
ARG BASE_DIR="/usr/src/nextcloud"
ARG TMP_PATCH_DIR="/tmp/build_patches"
ARG THEME_VERSION="v30.0.1"
ARG LDAP_WRITE_SUPPORT_VERSION="1.12.1"
ARG THEME_VERSION="https://gitlab.e.foundation/api/v4/projects/315/packages/generic/eCloud/v30.0.3/eCloud-v30.0.3.tar.gz"
ARG LDAP_WRITE_SUPPORT_VERSION="1.13.0"
ARG IS_SELFHOST=false

RUN curl -fsSL -o ldap_write_support.tar.gz \
@@ -222,14 +165,16 @@ RUN patch -u ${BASE_DIR}/core/Controller/ContactsMenuController.php -i ${TMP_PAT
RUN cd ${BASE_DIR} && patch -p0 < ${TMP_PATCH_DIR}/005-autocomplete-user-leak-core.patch
RUN patch -u ${BASE_DIR}/core/templates/layout.guest.php -i ${TMP_PATCH_DIR}/016-login-screen.patch
RUN patch -u ${BASE_DIR}/lib/private/Notification/Manager.php -i ${TMP_PATCH_DIR}/020-fairuse-notification-fix.patch
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
#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/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-20250822/app/libraries/RainLoop/Actions/Contacts.php -i ${TMP_PATCH_DIR}/037-snappymail-contact.patch
#Below patch will be removed after NC 31
RUN patch -u ${BASE_DIR}/lib/private/App/AppManager.php -i ${TMP_PATCH_DIR}/038-add-hyphen-to-appid.patch
RUN rm -rf ${TMP_PATCH_DIR}


@@ -243,7 +188,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-DS2Cdf60.chunk.mjs
RUN sed -i 's/attrs:{id:"notifications",/attrs:{id:"notifications","data-has-notifications":0!==u.notifications.length,/' ${BASE_DIR}/apps/notifications/js/NotificationsApp-BLfRaKfb.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
@@ -279,13 +224,7 @@ RUN sed -i 's/{attrs:{name:t.t("theming","Navigation bar settings")}}/{staticCla


# Custom theme
RUN rm -rf ${BASE_DIR}/themes/eCloud && \
  curl -fsSL -o eCloud-theme.tar.gz \
  "https://gitlab.e.foundation/e/infra/ecloud/nextcloud-apps/nextcloud-theme/-/archive/${THEME_VERSION}/nextcloud-theme-${THEME_VERSION}.tar.gz" && \
  tar -xf eCloud-theme.tar.gz -C /tmp/ && \
  mv /tmp/nextcloud-theme-${THEME_VERSION}/ ${BASE_DIR}/themes/eCloud && \
  chown -R www-data:www-data ${BASE_DIR}/themes/eCloud/ && \
  rm -rf eCloud-theme.tar.gz ${BASE_DIR}/themes/example/
RUN curl -sL ${THEME_VERSION} | tar xzf - -C ${BASE_DIR}/themes

# Remove Selfhost theme
RUN if [ "$IS_SELFHOST" = false ]; then \
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ if version_greater "$image_version" "$installed_version"; then
    rsync $rsync_options --include "/integration_google/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/
    rsync $rsync_options --include "/ldap_write_support/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/
    rsync $rsync_options --include "/murena-dashboard/" --exclude '/*' $SRC_DIR/custom_apps/ /$DST_DIR/custom_apps/
    #rsync $rsync_options --include "/snappymail/" --exclude '/*' $SRC_DIR/custom_apps/ /$DST_DIR/custom_apps/
    rsync $rsync_options --include "/snappymail/" --exclude '/*' $SRC_DIR/custom_apps/ /$DST_DIR/custom_apps/
    rsync $rsync_options --include "/eCloud/" --exclude '/*' $SRC_DIR/themes/ $DST_DIR/themes/
    rsync $rsync_options --include "/Murena/" --exclude '/*' $SRC_DIR/themes/ $DST_DIR/themes/
    rsync $rsync_options --include "/memories/" --exclude '/*' $SRC_DIR/custom_apps/ $DST_DIR/custom_apps/
+12 −10
Original line number Diff line number Diff line
--- lib/private/legacy/OC_Helper.php	2025-05-25 16:00:00.880495300 +0530
+++ lib/private/legacy/OC_Helper-new.php	2025-05-25 16:02:00.970495300 +0530
@@ -512,6 +512,12 @@
@@ -512,6 +512,13 @@
 		}
 		try {
 			$free = $sourceStorage->free_space($rootInfo->getInternalPath());
@@ -10,13 +10,15 @@
+            if ($path === '/') {
+                $used = $used + $mailQuotaUsage;
+            }
+
 			if (is_bool($free)) {
 				$free = 0.0;
 			}
@@ -547,7 +553,6 @@
@@ -547,7 +554,6 @@
 		 */
 		$isRemoteShare = $storage->instanceOfStorage(\OCA\Files_Sharing\External\Storage::class);
 
-		$ownerId = $storage->getOwner($path);
 		$hasOwnerId = $ownerId !== false && $ownerId !== null;
 		$ownerDisplayName = '';
 
 		if ($isRemoteShare === false && $ownerId !== false) {
 No newline at end of file
+35 −30
Original line number Diff line number Diff line
--- layout.guest.php	2025-07-24 10:37:50
+++ layout.guest-new.php	2025-07-24 10:58:20
--- layout.guest.php	2025-10-10 12:39:23
+++ layout.guest-new.php	2025-10-10 12:53:43
@@ -32,6 +32,7 @@
 		<link rel="mask-icon" sizes="any" href="<?php print_unescaped(image_path('core', 'favicon-mask.svg')); ?>" color="<?php p($theme->getColorPrimary()); ?>">
 		<link rel="manifest" href="<?php print_unescaped(image_path('core', 'manifest.json')); ?>" crossorigin="use-credentials">
@@ -8,7 +8,7 @@
 		<?php emit_script_loading_tags($_); ?>
 		<?php print_unescaped($_['headers']); ?>
 	</head>
@@ -42,10 +43,38 @@
@@ -42,10 +43,37 @@
 		<?php include 'layout.initial-state.php'; ?>
 		<div class="wrapper">
 			<div class="v-align">
@@ -43,21 +43,26 @@
+								<div class="sign-in-label sign-label"><?php p($l->t('Sign in to your account')); ?></div>
+								<div class="sign-in-label fp-label" style="display: none"><?php p($l->t('Forgot Password')); ?></div>
+							<?php } ?>
+
 						</div>
 					</header>
 				<?php endif; ?>
@@ -54,18 +83,24 @@
@@ -54,18 +82,30 @@
 						<?php p($theme->getName()); ?>
 					</h1>
 					<?php print_unescaped($_['content']); ?>
+					<?php if (array_key_exists("alt_login", $_)) { ?>
+						<div class="have-an-account">
+							<div class="createaccdesk"><?php p($l->t('Don\'t have an account yet?')); ?> <a href="/signup"><?php p($l->t('Create an account')); ?></a></div>
+							<div class="createaccmob"><p><?php p($l->t('Don\'t have an account yet?')); ?></p> <p> <a href="/signup"><?php p($l->t('Create an account')); ?></a></p></div>
+							<div class="createaccdesk">
+								<?php p($l->t('Don\'t have an account yet?')); ?>
+								<a href="/signup"><?php p($l->t('Create an account')); ?></a>
+							</div>
+							<div class="createaccmob">
+								<p><?php p($l->t('Don\'t have an account yet?')); ?></p>
+								<p><a href="/signup"><?php p($l->t('Create an account')); ?></a></p>
+							</div>
+						</div>
+					<?php } ?>
 				</main>
 				</div>
+				<footer role="contentinfo" class="<?= (!array_key_exists("alt_login", $_)) ? 'forgotpass-footer' : '' ?>">
+					<p class="info">
+						<?php print_unescaped($theme->getLongFooter()); ?>
+0 −59
Original line number Diff line number Diff line
From: Akhil <akhil@e.email>
Date: Wed, 04 Jan 2023 16:24 +0530
Subject: [PATCH] This patch optimize the ldap checkPassword function to reduce number of LDAP binds and SQL UPDATE operations per password check

--- ./apps/user_ldap/lib/User_LDAP.php	2023-01-04 16:20:02.747181606 +0530
+++ ./apps/user_ldap/lib/User_LDAP-new.php	2023-01-17 19:22:51.776857415 +0530
@@ -76,11 +76,12 @@
 	 * @return string|false
 	 * @throws \Exception
 	 */
-	public function loginName2UserName($loginName) {
+	public function loginName2UserName($loginName, bool $forceLdapRefetch = false) {
 		$cacheKey = 'loginName2UserName-' . $loginName;
 		$username = $this->access->connection->getFromCache($cacheKey);
 
-		if ($username !== null) {
+		$ignoreCache = ($username === false && $forceLdapRefetch);
+		if ($username !== null && !$ignoreCache) {
 			return $username;
 		}
 
@@ -96,6 +97,9 @@
 			}
 			$username = $user->getUsername();
 			$this->access->connection->writeToCache($cacheKey, $username);
+			if($forceLdapRefetch) {
+				$user->processAttributes($ldapRecord);
+			}
 			return $username;
 		} catch (NotOnLDAP $e) {
 			$this->access->connection->writeToCache($cacheKey, false);
@@ -142,16 +146,11 @@
 	 * @return false|string
 	 */
 	public function checkPassword($uid, $password) {
-		try {
-			$ldapRecord = $this->getLDAPUserByLoginName($uid);
-		} catch (NotOnLDAP $e) {
-			$this->logger->debug(
-				$e->getMessage(),
-				['app' => 'user_ldap', 'exception' => $e]
-			);
+		$username = $this->loginName2UserName($uid, true);
+		if(!$username) {
 			return false;
 		}
-		$dn = $ldapRecord['dn'][0];
+		$dn = $this->access->username2dn($username);
 		$user = $this->access->userManager->get($dn);
 
 		if (!$user instanceof User) {
@@ -164,7 +163,6 @@
 			}
 
 			$this->access->cacheUserExists($user->getUsername());
-			$user->processAttributes($ldapRecord);
 			$user->markLogin();
 
 			return $user->getUsername();
Loading