// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. var SettingItemMin = require('../setting_item_min.jsx'); var SettingItemMax = require('../setting_item_max.jsx'); var AccessHistoryModal = require('../access_history_modal.jsx'); var ActivityLogModal = require('../activity_log_modal.jsx'); var Client = require('../../utils/client.jsx'); var AsyncClient = require('../../utils/async_client.jsx'); var Constants = require('../../utils/constants.jsx'); export default class SecurityTab extends React.Component { constructor(props) { super(props); this.showAccessHistoryModal = this.showAccessHistoryModal.bind(this); this.showActivityLogModal = this.showActivityLogModal.bind(this); this.hideModals = this.hideModals.bind(this); this.submitPassword = this.submitPassword.bind(this); this.updateCurrentPassword = this.updateCurrentPassword.bind(this); this.updateNewPassword = this.updateNewPassword.bind(this); this.updateConfirmPassword = this.updateConfirmPassword.bind(this); this.setupInitialState = this.setupInitialState.bind(this); const state = this.setupInitialState(); state.showAccessHistoryModal = false; state.showActivityLogModal = false; this.state = state; } showAccessHistoryModal() { this.props.setEnforceFocus(false); this.setState({showAccessHistoryModal: true}); } showActivityLogModal() { this.props.setEnforceFocus(false); this.setState({showActivityLogModal: true}); } hideModals() { this.props.setEnforceFocus(true); this.setState({ showAccessHistoryModal: false, showActivityLogModal: false }); } submitPassword(e) { e.preventDefault(); var user = this.props.user; var currentPassword = this.state.currentPassword; var newPassword = this.state.newPassword; var confirmPassword = this.state.confirmPassword; if (currentPassword === '') { this.setState({passwordError: 'Please enter your current password', serverError: ''}); return; } if (newPassword.length < 5) { this.setState({passwordError: 'New passwords must be at least 5 characters', serverError: ''}); return; } if (newPassword !== confirmPassword) { this.setState({passwordError: 'The new passwords you entered do not match', serverError: ''}); return; } var data = {}; data.user_id = user.id; data.current_password = currentPassword; data.new_password = newPassword; Client.updatePassword(data, function success() { this.props.updateSection(''); AsyncClient.getMe(); this.setState(this.setupInitialState()); }.bind(this), function fail(err) { var state = this.setupInitialState(); if (err.message) { state.serverError = err.message; } else { state.serverError = err; } state.passwordError = ''; this.setState(state); }.bind(this) ); } updateCurrentPassword(e) { this.setState({currentPassword: e.target.value}); } updateNewPassword(e) { this.setState({newPassword: e.target.value}); } updateConfirmPassword(e) { this.setState({confirmPassword: e.target.value}); } setupInitialState() { return {currentPassword: '', newPassword: '', confirmPassword: ''}; } render() { var serverError; if (this.state.serverError) { serverError = this.state.serverError; } var passwordError; if (this.state.passwordError) { passwordError = this.state.passwordError; } var updateSectionStatus; var passwordSection; if (this.props.activeSection === 'password') { var inputs = []; var submit = null; if (this.props.user.auth_service === '') { inputs.push(