Loading appinfo/routes.php +1 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,6 @@ return ['routes' => [ ['name' => 'account#create', 'url' => '/accounts/create', 'verb' => 'POST'], ['name' => 'account#captcha', 'url' => '/accounts/captcha', 'verb' => 'GET'], ['name' => 'account#verify_captcha', 'url' => '/accounts/verify_captcha', 'verb' => 'POST'], ['name' => 'account#check_username_available', 'url' => '/accounts/check_username_available', 'verb' => 'POST'], ['name' => 'account#validate_fields', 'url' => '/accounts/validate_fields', 'verb' => 'POST'], ]]; lib/Controller/AccountController.php +13 −2 Original line number Diff line number Diff line Loading @@ -237,17 +237,18 @@ class AccountController extends Controller { return null; // Validation passed } /** * Check if a username is available. * 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 */ public function checkUsernameAvailable(string $username) : DataResponse { public function validateFields(string $username, string $displayname) : DataResponse { $this->session->remove(self::SESSION_USERNAME_CHECK); $response = new DataResponse(); $response->setStatus(400); Loading @@ -256,6 +257,16 @@ class AccountController extends Controller { $response->setData(['message' => 'Username is required.', 'success' => false]); return $response; } if (empty($displayname)) { $response->setData(['message' => 'Display name is required.', 'success' => false]); return $response; } $validationError = $this->validateInput('displayname', $displayname, 30); if ($validationError !== null) { $response->setData(['message' => $validationError, 'success' => false]); return $response; } $validationError = $this->validateInput('username', $username, 30); if ($validationError !== null) { Loading src/signup/RegistrationForm.vue +5 −4 Original line number Diff line number Diff line Loading @@ -288,11 +288,12 @@ export default { } }, async checkUsername() { async validateFields() { const data = { username: this.formData.username, displayname: this.formData.displayname, } const url = generateUrl(`/apps/${this.appName}/accounts/check_username_available`) const url = generateUrl(`/apps/${this.appName}/accounts/validate_fields`) try { await Axios.post(url, data) Loading @@ -309,7 +310,7 @@ export default { async submitRegistrationForm() { this.processing = true this.validateForm(['displayname', 'username', 'password', 'repassword', 'termsandservices']) await this.checkUsername() await this.validateFields() const isFormValid = Object.values(this.validation).every(value => !value) if (isFormValid) { Loading Loading
appinfo/routes.php +1 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,6 @@ return ['routes' => [ ['name' => 'account#create', 'url' => '/accounts/create', 'verb' => 'POST'], ['name' => 'account#captcha', 'url' => '/accounts/captcha', 'verb' => 'GET'], ['name' => 'account#verify_captcha', 'url' => '/accounts/verify_captcha', 'verb' => 'POST'], ['name' => 'account#check_username_available', 'url' => '/accounts/check_username_available', 'verb' => 'POST'], ['name' => 'account#validate_fields', 'url' => '/accounts/validate_fields', 'verb' => 'POST'], ]];
lib/Controller/AccountController.php +13 −2 Original line number Diff line number Diff line Loading @@ -237,17 +237,18 @@ class AccountController extends Controller { return null; // Validation passed } /** * Check if a username is available. * 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 */ public function checkUsernameAvailable(string $username) : DataResponse { public function validateFields(string $username, string $displayname) : DataResponse { $this->session->remove(self::SESSION_USERNAME_CHECK); $response = new DataResponse(); $response->setStatus(400); Loading @@ -256,6 +257,16 @@ class AccountController extends Controller { $response->setData(['message' => 'Username is required.', 'success' => false]); return $response; } if (empty($displayname)) { $response->setData(['message' => 'Display name is required.', 'success' => false]); return $response; } $validationError = $this->validateInput('displayname', $displayname, 30); if ($validationError !== null) { $response->setData(['message' => $validationError, 'success' => false]); return $response; } $validationError = $this->validateInput('username', $username, 30); if ($validationError !== null) { Loading
src/signup/RegistrationForm.vue +5 −4 Original line number Diff line number Diff line Loading @@ -288,11 +288,12 @@ export default { } }, async checkUsername() { async validateFields() { const data = { username: this.formData.username, displayname: this.formData.displayname, } const url = generateUrl(`/apps/${this.appName}/accounts/check_username_available`) const url = generateUrl(`/apps/${this.appName}/accounts/validate_fields`) try { await Axios.post(url, data) Loading @@ -309,7 +310,7 @@ export default { async submitRegistrationForm() { this.processing = true this.validateForm(['displayname', 'username', 'password', 'repassword', 'termsandservices']) await this.checkUsername() await this.validateFields() const isFormValid = Object.values(this.validation).every(value => !value) if (isFormValid) { Loading