From 5da5c0bbfb80cb5c9cf2699f42d17decc2d60f5b Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Tue, 1 Aug 2017 11:06:53 -0400 Subject: PLT-6987 User access token UI (#7007) * Add user access token UI * Fix enter press and update mattermost-redux * Updating UI for access token stuff (#7066) * Revert segment key --- .../admin_console/revoke_token_button/index.js | 24 ++++++++++ .../revoke_token_button/revoke_token_button.jsx | 56 ++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 webapp/components/admin_console/revoke_token_button/index.js create mode 100644 webapp/components/admin_console/revoke_token_button/revoke_token_button.jsx (limited to 'webapp/components/admin_console/revoke_token_button') 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 ( + + ); + } +} -- cgit v1.2.3-1-g7c22