From 065553fb8114b3212dc6453a14b2c3d9262018e0 Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Wed, 22 Oct 2025 23:14:29 +0530 Subject: [PATCH 01/15] Replace deprecated @NoAdminRequired annotations with #[NoAdminRequired] attributes - Updated AccountController.php: 5 method annotations replaced - Updated BetaUserController.php: 3 method annotations replaced - Updated ShopAccountController.php: 4 method annotations replaced - All @NoAdminRequired annotations now use modern PHP 8 attribute syntax --- lib/Controller/AccountController.php | 36 ++++++++++-------------- lib/Controller/BetaUserController.php | 18 ++++-------- lib/Controller/ShopAccountController.php | 17 +++-------- 3 files changed, 25 insertions(+), 46 deletions(-) diff --git a/lib/Controller/AccountController.php b/lib/Controller/AccountController.php index b9e0d16b..e7071b62 100644 --- a/lib/Controller/AccountController.php +++ b/lib/Controller/AccountController.php @@ -87,11 +87,10 @@ class AccountController extends Controller { $this->appData = $appData; } + #[NoAdminRequired] + #[PublicPage] + #[NoCSRFRequired] /** - * @NoAdminRequired - * @PublicPage - * @NoCSRFRequired - * * @param string $lang Language code (default: 'en') * */ @@ -128,11 +127,10 @@ class AccountController extends Controller { return $response; } + #[NoAdminRequired] + #[PublicPage] + #[NoCSRFRequired] /** - * @NoAdminRequired - * @PublicPage - * @NoCSRFRequired - * * @param string $displayname User's display name * @param string $recoveryEmail User's recovery email * @param string $username User's username @@ -268,15 +266,14 @@ class AccountController extends Controller { /** * Check if a username and displayname is valid or not. * - * @NoAdminRequired - * @PublicPage - * @NoCSRFRequired - * * @param string $username The username to check. * @param string $displayname The displayname to check. * * @return \OCP\AppFramework\Http\DataResponse */ + #[NoAdminRequired] + #[PublicPage] + #[NoCSRFRequired] public function validateFields(string $username, string $displayname) : DataResponse { $this->session->remove(self::SESSION_VERIFIED_DISPLAYNAME); $this->session->remove(self::SESSION_VERIFIED_USERNAME); @@ -337,11 +334,9 @@ class AccountController extends Controller { return $response; } - /** - * @NoAdminRequired - * @PublicPage - * @NoCSRFRequired - */ + #[NoAdminRequired] + #[PublicPage] + #[NoCSRFRequired] public function captcha(): Http\DataDisplayResponse { // Don't allow requests to image captcha if different provider is set if ($this->getCaptchaProvider() !== self::DEFAULT_CAPTCHA_PROVIDER) { @@ -357,15 +352,14 @@ class AccountController extends Controller { /** * Verify a human verification input against captcha session values. * - * @NoAdminRequired - * @PublicPage - * @NoCSRFRequired - * * @param string $token The user-provided human verification input. * @param string $bypassToken Token to bypass captcha for automation testing * * @return \OCP\AppFramework\Http\DataResponse */ + #[NoAdminRequired] + #[PublicPage] + #[NoCSRFRequired] public function verifyCaptcha(string $userToken = '', string $bypassToken = '') : DataResponse { $response = new DataResponse(); diff --git a/lib/Controller/BetaUserController.php b/lib/Controller/BetaUserController.php index 651fe81f..d42f4dc6 100644 --- a/lib/Controller/BetaUserController.php +++ b/lib/Controller/BetaUserController.php @@ -43,10 +43,8 @@ class BetaUserController extends Controller { $this->mailer = $mailer; } - /** - * @NoAdminRequired - * @NoCSRFRequired - */ + #[NoAdminRequired] + #[NoCSRFRequired] public function addUserInGroup() { $user = $this->userSession->getUser(); $groupName = $this->config->getSystemValue("beta_group_name"); @@ -58,10 +56,8 @@ class BetaUserController extends Controller { return true; } - /** - * @NoAdminRequired - * @NoCSRFRequired - */ + #[NoAdminRequired] + #[NoCSRFRequired] public function removeUserInGroup() { $user = $this->userSession->getUser(); $groupName = $this->config->getSystemValue("beta_group_name"); @@ -73,10 +69,8 @@ class BetaUserController extends Controller { return true; } - /** - * @NoAdminRequired - * @NoCSRFRequired - */ + #[NoAdminRequired] + #[NoCSRFRequired] public function submitIssue(string $title, string $description) { $user = $this->userSession->getUser(); $fromEmail = $user->getEMailAddress(); diff --git a/lib/Controller/ShopAccountController.php b/lib/Controller/ShopAccountController.php index fcaf9159..2d459fba 100644 --- a/lib/Controller/ShopAccountController.php +++ b/lib/Controller/ShopAccountController.php @@ -26,9 +26,7 @@ class ShopAccountController extends Controller { $this->logger = $logger; } - /** - * @NoAdminRequired - */ + #[NoAdminRequired] public function checkShopEmailPostDelete(string $shopEmailPostDelete) { $user = $this->userSession->getUser(); $email = $user->getEMailAddress(); @@ -42,10 +40,7 @@ class ShopAccountController extends Controller { return $response; } } - /** - * @NoAdminRequired - */ - + #[NoAdminRequired] public function setShopEmailPostDelete(string $shopEmailPostDelete) { $user = $this->userSession->getUser(); $userId = $user->getUID(); @@ -63,9 +58,7 @@ class ShopAccountController extends Controller { $this->shopAccountService->setShopEmailPostDeletePreference($userId, $shopEmailPostDelete); } - /** - * @NoAdminRequired - */ + #[NoAdminRequired] public function setShopDeletePreference(bool $deleteShopAccount) { $user = $this->userSession->getUser(); $userId = $user->getUID(); @@ -73,9 +66,7 @@ class ShopAccountController extends Controller { $this->shopAccountService->setShopDeletePreference($userId, $deleteShopAccount); } - /** - * @NoAdminRequired - */ + #[NoAdminRequired] public function getShopUsers() { $response = new DataResponse(); $user = $this->userSession->getUser(); -- GitLab From 099b24a770ad94a63aa108f888af0f9e19fcbba8 Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Thu, 23 Oct 2025 00:11:21 +0530 Subject: [PATCH 02/15] Fix: Make Experimental section always visible in settings - Modified BetaUserSetting::getSection() to always return 'beta-user' - Keeps debug logging for configuration issues - Ensures Experimental menu appears in Nextcloud 31 settings regardless of beta group configuration --- lib/Settings/BetaUserSetting.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/Settings/BetaUserSetting.php b/lib/Settings/BetaUserSetting.php index 4449ecef..0dc9c72b 100644 --- a/lib/Settings/BetaUserSetting.php +++ b/lib/Settings/BetaUserSetting.php @@ -48,13 +48,13 @@ class BetaUserSetting implements ISettings { $betaGroupName = $this->config->getSystemValue("beta_group_name"); if (empty($betaGroupName)) { $this->logger->debug('Beta group name is not set in config.php', ['app' => 'ecloud-accounts']); - return null; - } - $groupExists = $this->groupManager->groupExists($betaGroupName); - if (! $groupExists) { - $this->logger->debug('Beta group does not exist!', ['app' => 'ecloud-accounts']); - return null; + } else { + $groupExists = $this->groupManager->groupExists($betaGroupName); + if (! $groupExists) { + $this->logger->debug('Beta group does not exist!', ['app' => 'ecloud-accounts']); + } } + // Always return the section ID to make Experimental section visible return 'beta-user'; } -- GitLab From bf545a873cafcc5f483ebb6b7b40522cfbe469b0 Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Thu, 23 Oct 2025 00:12:53 +0530 Subject: [PATCH 03/15] Revert "Fix: Make Experimental section always visible in settings" This reverts commit 099b24a770ad94a63aa108f888af0f9e19fcbba8. --- lib/Settings/BetaUserSetting.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/Settings/BetaUserSetting.php b/lib/Settings/BetaUserSetting.php index 0dc9c72b..4449ecef 100644 --- a/lib/Settings/BetaUserSetting.php +++ b/lib/Settings/BetaUserSetting.php @@ -48,13 +48,13 @@ class BetaUserSetting implements ISettings { $betaGroupName = $this->config->getSystemValue("beta_group_name"); if (empty($betaGroupName)) { $this->logger->debug('Beta group name is not set in config.php', ['app' => 'ecloud-accounts']); - } else { - $groupExists = $this->groupManager->groupExists($betaGroupName); - if (! $groupExists) { - $this->logger->debug('Beta group does not exist!', ['app' => 'ecloud-accounts']); - } + return null; + } + $groupExists = $this->groupManager->groupExists($betaGroupName); + if (! $groupExists) { + $this->logger->debug('Beta group does not exist!', ['app' => 'ecloud-accounts']); + return null; } - // Always return the section ID to make Experimental section visible return 'beta-user'; } -- GitLab From f9dfd7e3940d3c7d52c9df4a832b8825ead59b8d Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Fri, 24 Oct 2025 09:00:20 +0530 Subject: [PATCH 04/15] namepsace --- lib/Controller/AccountController.php | 3 +++ lib/Controller/BetaUserController.php | 2 ++ lib/Controller/ShopAccountController.php | 1 + 3 files changed, 6 insertions(+) diff --git a/lib/Controller/AccountController.php b/lib/Controller/AccountController.php index e7071b62..cf8478ed 100644 --- a/lib/Controller/AccountController.php +++ b/lib/Controller/AccountController.php @@ -16,6 +16,9 @@ use OCA\EcloudAccounts\Service\NewsLetterService; use OCA\EcloudAccounts\Service\UserService; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; +use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\RedirectResponse; use OCP\AppFramework\Http\TemplateResponse; diff --git a/lib/Controller/BetaUserController.php b/lib/Controller/BetaUserController.php index d42f4dc6..c19f9f30 100644 --- a/lib/Controller/BetaUserController.php +++ b/lib/Controller/BetaUserController.php @@ -7,6 +7,8 @@ namespace OCA\EcloudAccounts\Controller; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\IConfig; use OCP\IGroupManager; use OCP\IRequest; diff --git a/lib/Controller/ShopAccountController.php b/lib/Controller/ShopAccountController.php index 2d459fba..6c157104 100644 --- a/lib/Controller/ShopAccountController.php +++ b/lib/Controller/ShopAccountController.php @@ -7,6 +7,7 @@ namespace OCA\EcloudAccounts\Controller; use Exception; use OCA\EcloudAccounts\Service\ShopAccountService; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; use OCP\IUserSession; -- GitLab From 96c1e4c6ccd837a56bbd9a11b5690e6437345ba1 Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Fri, 24 Oct 2025 09:01:49 +0530 Subject: [PATCH 05/15] unncessary code removed --- lib/Controller/ShopAccountController.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/Controller/ShopAccountController.php b/lib/Controller/ShopAccountController.php index 6c157104..49cd6e1c 100644 --- a/lib/Controller/ShopAccountController.php +++ b/lib/Controller/ShopAccountController.php @@ -11,20 +11,16 @@ use OCP\AppFramework\Http\Attribute\NoAdminRequired; use OCP\AppFramework\Http\DataResponse; use OCP\IRequest; use OCP\IUserSession; -use Psr\Log\LoggerInterface; class ShopAccountController extends Controller { private ShopAccountService $shopAccountService; private IUserSession $userSession; - private LoggerInterface $logger; - - public function __construct($appName, IRequest $request, IUserSession $userSession, ShopAccountService $shopAccountService, LoggerInterface $logger) { + public function __construct($appName, IRequest $request, IUserSession $userSession, ShopAccountService $shopAccountService) { parent::__construct($appName, $request); $this->shopAccountService = $shopAccountService; $this->userSession = $userSession; - $this->logger = $logger; } #[NoAdminRequired] -- GitLab From 4e9afe8217043b007fe671fcaaf34e3f78fc0f94 Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Fri, 24 Oct 2025 13:40:10 +0530 Subject: [PATCH 06/15] width 100 --- src/signup/CaptchaForm.vue | 2 +- src/signup/RegistrationForm.vue | 2 +- src/signup/SuccessSection.vue | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/signup/CaptchaForm.vue b/src/signup/CaptchaForm.vue index a919ba32..8c605dd2 100644 --- a/src/signup/CaptchaForm.vue +++ b/src/signup/CaptchaForm.vue @@ -236,7 +236,7 @@ p.validation-warning:before { padding-right: 5px; } .btn-primary { - width: 95%; + width: 100%; background-color: var(--color-primary); color: white; border-color: var(--color-primary); diff --git a/src/signup/RegistrationForm.vue b/src/signup/RegistrationForm.vue index bb6de5b8..5a731c92 100644 --- a/src/signup/RegistrationForm.vue +++ b/src/signup/RegistrationForm.vue @@ -505,7 +505,7 @@ p.validation-success:before { padding-right: 5px; } .btn-primary { - width: 95%; + width: 100%; background-color: var(--color-primary); color: white; border-color: var(--color-primary); diff --git a/src/signup/SuccessSection.vue b/src/signup/SuccessSection.vue index a7d79c9b..1821f998 100644 --- a/src/signup/SuccessSection.vue +++ b/src/signup/SuccessSection.vue @@ -72,7 +72,7 @@ export default { } } .btn-primary { - width: 95%; + width: 100%; background-color: var(--color-primary); color: white; border-color: var(--color-primary); -- GitLab From 1c18c1cb01b58d38eb40bde1103f3c67e73195d7 Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Fri, 24 Oct 2025 13:41:13 +0530 Subject: [PATCH 07/15] padding 12px --- src/signup/CaptchaForm.vue | 1 + src/signup/RecoveryEmailForm.vue | 1 + src/signup/RegistrationForm.vue | 1 + src/signup/SuccessSection.vue | 1 + 4 files changed, 4 insertions(+) diff --git a/src/signup/CaptchaForm.vue b/src/signup/CaptchaForm.vue index 8c605dd2..42dbc3a1 100644 --- a/src/signup/CaptchaForm.vue +++ b/src/signup/CaptchaForm.vue @@ -241,6 +241,7 @@ p.validation-warning:before { color: white; border-color: var(--color-primary); font-size: large; + padding: 12px; } @media screen and (max-width: 500px) { #main { diff --git a/src/signup/RecoveryEmailForm.vue b/src/signup/RecoveryEmailForm.vue index 8eea04d1..3bb7decf 100644 --- a/src/signup/RecoveryEmailForm.vue +++ b/src/signup/RecoveryEmailForm.vue @@ -204,6 +204,7 @@ p.validation-warning:before { color: var(--color-primary-text); border-color: var(--color-primary); font-size: large; + padding: 12px; } .btn-default{ diff --git a/src/signup/RegistrationForm.vue b/src/signup/RegistrationForm.vue index 5a731c92..89f1feed 100644 --- a/src/signup/RegistrationForm.vue +++ b/src/signup/RegistrationForm.vue @@ -510,6 +510,7 @@ p.validation-success:before { color: white; border-color: var(--color-primary); font-size: large; + padding: 12px; } .pad-left-5{ padding-left: 5px; diff --git a/src/signup/SuccessSection.vue b/src/signup/SuccessSection.vue index 1821f998..6a997d6b 100644 --- a/src/signup/SuccessSection.vue +++ b/src/signup/SuccessSection.vue @@ -78,6 +78,7 @@ export default { border-color: var(--color-primary); font-size: large; margin: 10px 0; + padding: 12px; } .success__title { -- GitLab From 2f04c13ffb3b5cea92be369bc586b30272fb5cdd Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Fri, 24 Oct 2025 13:46:50 +0530 Subject: [PATCH 08/15] padding changes --- scss/ecloud-accounts-userregistration.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/scss/ecloud-accounts-userregistration.scss b/scss/ecloud-accounts-userregistration.scss index 02f834d4..6204d285 100644 --- a/scss/ecloud-accounts-userregistration.scss +++ b/scss/ecloud-accounts-userregistration.scss @@ -33,6 +33,7 @@ html { background-color: #ffffff; color: #000000; border: 1px solid #E6E8E9; + padding: 30px 20px; } @media only screen and (max-width: 768px) { -- GitLab From 938679af2dd06ec8c684084b911c583c6c2fac9e Mon Sep 17 00:00:00 2001 From: theronakpatel Date: Fri, 24 Oct 2025 13:50:30 +0530 Subject: [PATCH 09/15] captchaForm --- src/signup/CaptchaForm.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/signup/CaptchaForm.vue b/src/signup/CaptchaForm.vue index 42dbc3a1..96407b30 100644 --- a/src/signup/CaptchaForm.vue +++ b/src/signup/CaptchaForm.vue @@ -117,7 +117,7 @@ export default {