diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php
index bd1331a090884..6ebffed2b5828 100644
--- a/apps/files_sharing/lib/Controller/ShareController.php
+++ b/apps/files_sharing/lib/Controller/ShareController.php
@@ -61,6 +61,7 @@
use OCP\Files\IRootFolder;
use OCP\Share\Exceptions\ShareNotFound;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\EventDispatcher\GenericEvent;
use OCP\Share\IManager as ShareManager;
/**
@@ -143,6 +144,34 @@ public function __construct(string $appName,
$this->shareManager = $shareManager;
}
+ /**
+ * @PublicPage
+ * @NoCSRFRequired
+ *
+ * Show the authentication page
+ * The form has to submit to the authenticate method route
+ */
+ public function showAuthenticate(): TemplateResponse {
+ $templateParameters = ['share' => $this->share];
+
+ $event = new GenericEvent(null, $templateParameters);
+ $this->eventDispatcher->dispatch('OCA\Files_Sharing::loadAdditionalScripts::publicShareAuth', $event);
+
+ return new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest');
+ }
+
+ /**
+ * The template to show when authentication failed
+ */
+ protected function showAuthFailed(): TemplateResponse {
+ $templateParameters = ['share' => $this->share, 'wrongpw' => true];
+
+ $event = new GenericEvent(null, $templateParameters);
+ $this->eventDispatcher->dispatch('OCA\Files_Sharing::loadAdditionalScripts::publicShareAuth', $event);
+
+ return new TemplateResponse('core', 'publicshareauth', $templateParameters, 'guest');
+ }
+
protected function verifyPassword(string $password): bool {
return $this->shareManager->checkPassword($this->share, $password);
}
diff --git a/core/templates/publicshareauth.php b/core/templates/publicshareauth.php
index adcc2853f873f..22e2262229119 100644
--- a/core/templates/publicshareauth.php
+++ b/core/templates/publicshareauth.php
@@ -20,6 +20,7 @@
placeholder="t('Password')); ?>" value=""
autocomplete="new-password" autocapitalize="off" autocorrect="off"
autofocus />
+