diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2020-10-20 13:58:01 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2021-03-22 06:40:41 +0100 |
commit | c8e0809d435e7ad90722be3d8a3304be73d95798 (patch) | |
tree | 05042a6f8eb5c786b1ebddb091f6dfc1f29f302d /apps/files_sharing/src/utils/GeneratePassword.js | |
parent | 100d5d9a4707dd7f5f6572d69dd55cb3d62b955f (diff) | |
download | nextcloud-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.js | 56 |
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 + }, '') +} |