aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/src/utils/GeneratePassword.js
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2020-10-20 13:58:01 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2021-03-22 06:40:41 +0100
commitc8e0809d435e7ad90722be3d8a3304be73d95798 (patch)
tree05042a6f8eb5c786b1ebddb091f6dfc1f29f302d /apps/files_sharing/src/utils/GeneratePassword.js
parent100d5d9a4707dd7f5f6572d69dd55cb3d62b955f (diff)
downloadnextcloud-server-c8e0809d435e7ad90722be3d8a3304be73d95798.tar.gz
nextcloud-server-c8e0809d435e7ad90722be3d8a3304be73d95798.zip
Extract GeneratePassword function to its own file
This is needed to be able to use the function from other components. Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'apps/files_sharing/src/utils/GeneratePassword.js')
-rw-r--r--apps/files_sharing/src/utils/GeneratePassword.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/apps/files_sharing/src/utils/GeneratePassword.js b/apps/files_sharing/src/utils/GeneratePassword.js
new file mode 100644
index 00000000000..6e1a79f3f51
--- /dev/null
+++ b/apps/files_sharing/src/utils/GeneratePassword.js
@@ -0,0 +1,56 @@
+
+/**
+ * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.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 axios from '@nextcloud/axios'
+import Config from '../services/ConfigService'
+
+const config = new Config()
+const passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'
+
+/**
+ * Generate a valid policy password or
+ * request a valid password if password_policy
+ * is enabled
+ *
+ * @returns {string} a valid password
+ */
+export default async function() {
+ // password policy is enabled, let's request a pass
+ if (config.passwordPolicy.api && config.passwordPolicy.api.generate) {
+ try {
+ const request = await axios.get(config.passwordPolicy.api.generate)
+ if (request.data.ocs.data.password) {
+ return request.data.ocs.data.password
+ }
+ } catch (error) {
+ console.info('Error generating password from password_policy', error)
+ }
+ }
+
+ // generate password of 10 length based on passwordSet
+ return Array(10).fill(0)
+ .reduce((prev, curr) => {
+ prev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))
+ return prev
+ }, '')
+}