diff options
Diffstat (limited to 'webapp/components/admin_console/revoke_token_button')
-rw-r--r-- | webapp/components/admin_console/revoke_token_button/index.js | 24 | ||||
-rw-r--r-- | webapp/components/admin_console/revoke_token_button/revoke_token_button.jsx | 56 |
2 files changed, 80 insertions, 0 deletions
diff --git a/webapp/components/admin_console/revoke_token_button/index.js b/webapp/components/admin_console/revoke_token_button/index.js new file mode 100644 index 000000000..6fada1bcc --- /dev/null +++ b/webapp/components/admin_console/revoke_token_button/index.js @@ -0,0 +1,24 @@ +// Copyright (c) 2017 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import {connect} from 'react-redux'; +import {bindActionCreators} from 'redux'; +import {revokeUserAccessToken} from 'mattermost-redux/actions/users'; + +import RevokeTokenButton from './revoke_token_button.jsx'; + +function mapStateToProps(state, ownProps) { + return { + ...ownProps + }; +} + +function mapDispatchToProps(dispatch) { + return { + actions: bindActionCreators({ + revokeUserAccessToken + }, dispatch) + }; +} + +export default connect(mapStateToProps, mapDispatchToProps)(RevokeTokenButton); diff --git a/webapp/components/admin_console/revoke_token_button/revoke_token_button.jsx b/webapp/components/admin_console/revoke_token_button/revoke_token_button.jsx new file mode 100644 index 000000000..4829a0cde --- /dev/null +++ b/webapp/components/admin_console/revoke_token_button/revoke_token_button.jsx @@ -0,0 +1,56 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; +import PropTypes from 'prop-types'; +import {FormattedMessage} from 'react-intl'; + +import {trackEvent} from 'actions/diagnostics_actions.jsx'; + +export default class RevokeTokenButton extends React.PureComponent { + static propTypes = { + + /* + * Token id to revoke + */ + tokenId: PropTypes.string.isRequired, + + /* + * Function to call on error + */ + onError: PropTypes.func.isRequired, + + actions: PropTypes.shape({ + + /** + * Function to revoke a user access token + */ + revokeUserAccessToken: PropTypes.func.isRequired + }).isRequired + }; + + handleClick = async (e) => { + e.preventDefault(); + + const {error} = await this.props.actions.revokeUserAccessToken(this.props.tokenId); + trackEvent('system_console', 'revoke_user_access_token'); + + if (error) { + this.props.onError(error.message); + } + } + + render() { + return ( + <button + className='btn btn-danger' + onClick={this.handleClick} + > + <FormattedMessage + id='admin.revoke_token_button.delete' + defaultMessage='Delete' + /> + </button> + ); + } +} |