import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { Modal, ModalHeader, ModalBody, ModalFooter, Alert, Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; import { gettext } from '../../utils/constants'; import { Utils } from '../../utils/utils'; const propTypes = { setPassword: PropTypes.func.isRequired, toggle: PropTypes.func.isRequired }; const { webdavSecretMinLength, webdavSecretStrengthLevel } = window.app.pageOptions; class SetWebdavPassword extends Component { constructor(props) { super(props); this.state = { password: '', isPasswordVisible: false, btnDisabled: false, errMsg: '' }; } submit = () => { if (this.state.password.length === 0) { this.setState({errMsg: gettext('Please enter a password.')}); return false; } if (this.state.password.length < webdavSecretMinLength) { this.setState({errMsg: gettext('The password is too short.')}); return false; } if (Utils.getStrengthLevel(this.state.password) < webdavSecretStrengthLevel) { this.setState({errMsg: gettext('The password is too weak. It should include at least {passwordStrengthLevel} of the following: number, upper letter, lower letter and other symbols.').replace('{passwordStrengthLevel}', webdavSecretStrengthLevel)}); return false; } this.setState({ btnDisabled: true }); this.props.setPassword(this.state.password.trim()); } handleInputChange = (e) => { this.setState({password: e.target.value}); } togglePasswordVisible = () => { this.setState({ isPasswordVisible: !this.state.isPasswordVisible }); } generatePassword = () => { let randomPassword = Utils.generatePassword(webdavSecretMinLength); this.setState({ password: randomPassword }); } render() { const { toggle } = this.props; const passwordTip = gettext('(at least {passwordMinLength} characters and includes {passwordStrengthLevel} of the following: number, upper letter, lower letter and other symbols)').replace('{passwordMinLength}', webdavSecretMinLength).replace('{passwordStrengthLevel}', webdavSecretStrengthLevel); return ( {gettext('Set WebDAV Password')}

{passwordTip}

{this.state.errMsg && {gettext(this.state.errMsg)}}
); } } SetWebdavPassword.propTypes = propTypes; export default SetWebdavPassword;