aboutsummaryrefslogtreecommitdiffstats
path: root/apps/settings/src/utils/validate.js
diff options
context:
space:
mode:
authorChristopher Ng <chrng8@gmail.com>2021-08-23 23:01:22 +0000
committerChristopher Ng <chrng8@gmail.com>2021-08-24 23:00:36 +0000
commitd738ca48b2a2092fa8c5b04fcde0c72b729ab02b (patch)
treea0acaff9044063e8fc6387f2d5aeb9b341522975 /apps/settings/src/utils/validate.js
parent5e67677d948d55314680c3d337c01d6a54118ed6 (diff)
downloadnextcloud-server-d738ca48b2a2092fa8c5b04fcde0c72b729ab02b.tar.gz
nextcloud-server-d738ca48b2a2092fa8c5b04fcde0c72b729ab02b.zip
Refine input validation
- Remove usage of JS core checkValidity() in favour of custom backend compliant validation - Rewrite and refactor with removal of form tag in favour of section - Scope styles - Remove many uses of $nextTick - Refine disabled state logic - Translate account property constants Signed-off-by: Christopher Ng <chrng8@gmail.com>
Diffstat (limited to 'apps/settings/src/utils/validate.js')
-rw-r--r--apps/settings/src/utils/validate.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/apps/settings/src/utils/validate.js b/apps/settings/src/utils/validate.js
new file mode 100644
index 00000000000..abea6250f3f
--- /dev/null
+++ b/apps/settings/src/utils/validate.js
@@ -0,0 +1,51 @@
+/**
+ * @copyright 2021, Christopher Ng <chrng8@gmail.com>
+ *
+ * @author Christopher Ng <chrng8@gmail.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+import { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants'
+
+/**
+ * Validate the display name input
+ *
+ * @param {string} input the input
+ * @returns {boolean}
+ */
+export function validateDisplayName(input) {
+ return input !== ''
+}
+
+/**
+ * Validate the email input
+ *
+ * *Compliant with PHP core FILTER_VALIDATE_EMAIL validator*
+ *
+ * *Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*
+ *
+ * @param {string} input the input
+ * @returns {boolean}
+ */
+export function validateEmail(input) {
+ return typeof input === 'string'
+ && VALIDATE_EMAIL_REGEX.test(input)
+ && input.slice(-1) !== '\n'
+ && input.length <= 320
+ && encodeURIComponent(input).replace(/%../g, 'x').length <= 320
+}