/** * @copyright Copyright (c) 2020 John Molakvoæ * * @author John Molakvoæ * * @license AGPL-3.0-or-later * * 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 . * */ 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 * * @return {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 }, '') }