mock平台

ProjectToken.js 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import React, { Component } from 'react';
  2. import PropTypes from 'prop-types';
  3. import './ProjectToken.scss';
  4. import { getToken, updateToken } from '../../../../reducer/modules/project';
  5. import { connect } from 'react-redux';
  6. import { Icon, Tooltip, message, Modal } from 'antd';
  7. import copy from 'copy-to-clipboard';
  8. const confirm = Modal.confirm;
  9. @connect(
  10. state => {
  11. return {
  12. token: state.project.token
  13. };
  14. },
  15. {
  16. getToken,
  17. updateToken
  18. }
  19. )
  20. class ProjectToken extends Component {
  21. static propTypes = {
  22. projectId: PropTypes.number,
  23. getToken: PropTypes.func,
  24. token: PropTypes.string,
  25. updateToken: PropTypes.func,
  26. curProjectRole: PropTypes.string
  27. };
  28. async componentDidMount() {
  29. await this.props.getToken(this.props.projectId);
  30. }
  31. copyToken = () => {
  32. copy(this.props.token);
  33. message.success('已经成功复制到剪切板');
  34. };
  35. updateToken = () => {
  36. let that = this;
  37. confirm({
  38. title: '重新生成key',
  39. content: '重新生成之后,之前的key将无法使用,确认重新生成吗?',
  40. okText: '确认',
  41. cancelText: '取消',
  42. async onOk() {
  43. await that.props.updateToken(that.props.projectId);
  44. message.success('更新成功');
  45. },
  46. onCancel() {}
  47. });
  48. };
  49. render() {
  50. return (
  51. <div className="project-token">
  52. <h2 className="token-title">工具标识</h2>
  53. <div className="message">
  54. 每个项目都有唯一的标识token,用户可以使用这个token值来请求项目 openapi.
  55. </div>
  56. <div className="token">
  57. <span>
  58. token: <span className="token-message">{this.props.token}</span>
  59. </span>
  60. <Tooltip title="复制">
  61. <Icon className="token-btn" type="copy" onClick={this.copyToken} />
  62. </Tooltip>
  63. {this.props.curProjectRole === 'admin' || this.props.curProjectRole === 'owner' ? (
  64. <Tooltip title="刷新">
  65. <Icon className="token-btn" type="reload" onClick={this.updateToken} />
  66. </Tooltip>
  67. ) : null}
  68. </div>
  69. <div className="blockquote">
  70. 为确保项目内数据的安全性和私密性,请勿轻易将该token暴露给项目组外用户。
  71. </div>
  72. <br />
  73. <h2 className="token-title">open接口:</h2>
  74. <p><a target="_blank" rel="noopener noreferrer" href="https://hellosean1025.github.io/yapi/openapi.html">详细接口文档</a></p>
  75. <div>
  76. <ul className="open-api">
  77. <li>/api/open/run_auto_test [运行自动化测试]</li>
  78. <li>/api/open/import_data [导入数据]</li>
  79. <li>/api/interface/add [新增接口]</li>
  80. <li>/api/interface/save [保存接口]</li>
  81. <li>/api/interface/up [更新接口]</li>
  82. <li>/api/interface/get [获取接口]</li>
  83. <li>/api/interface/list [获取接口列表]</li>
  84. <li>/api/interface/list_menu [获取接口菜单]</li>
  85. <li>/api/interface/add_cat [新增接口分类]</li>
  86. <li>/api/interface/getCatMenu [获取所有分类]</li>
  87. </ul>
  88. </div>
  89. </div>
  90. );
  91. }
  92. }
  93. export default ProjectToken;