diff options
Diffstat (limited to 'apps/encryption/lib/Controller/StatusController.php')
-rw-r--r-- | apps/encryption/lib/Controller/StatusController.php | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/apps/encryption/lib/Controller/StatusController.php b/apps/encryption/lib/Controller/StatusController.php new file mode 100644 index 00000000000..341ad6bc49f --- /dev/null +++ b/apps/encryption/lib/Controller/StatusController.php @@ -0,0 +1,76 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ +namespace OCA\Encryption\Controller; + +use OCA\Encryption\Session; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\DataResponse; +use OCP\Encryption\IManager; +use OCP\IL10N; +use OCP\IRequest; + +class StatusController extends Controller { + + /** + * @param string $AppName + * @param IRequest $request + * @param IL10N $l + * @param Session $session + * @param IManager $encryptionManager + */ + public function __construct( + $AppName, + IRequest $request, + private IL10N $l, + private Session $session, + private IManager $encryptionManager, + ) { + parent::__construct($AppName, $request); + } + + /** + * @return DataResponse + */ + #[NoAdminRequired] + public function getStatus() { + $status = 'error'; + $message = 'no valid init status'; + switch ($this->session->getStatus()) { + case Session::INIT_EXECUTED: + $status = 'interactionNeeded'; + $message = $this->l->t( + 'Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files.' + ); + break; + case Session::NOT_INITIALIZED: + $status = 'interactionNeeded'; + if ($this->encryptionManager->isEnabled()) { + $message = $this->l->t( + 'Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again.' + ); + } else { + $message = $this->l->t( + 'Please enable server side encryption in the admin settings in order to use the encryption module.' + ); + } + break; + case Session::INIT_SUCCESSFUL: + $status = 'success'; + $message = $this->l->t('Encryption app is enabled and ready'); + } + + return new DataResponse( + [ + 'status' => $status, + 'data' => [ + 'message' => $message] + ] + ); + } +} |