1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-11 11:52:08 +00:00
seahub/frontend/src/pages/org-admin/org-logs.js
awu0403 d91cdad79e
Update transfer repo add audit log (#7480)
* add admin log

* update

* update

* update

* add org transfer log

* optimize

* Update file-transfer-log.js

* add db_index

* add-operator

* update

* file --> repo

* Update mysql.sql

* update

* update

---------

Co-authored-by: 孙永强 <11704063+s-yongqiang@user.noreply.gitee.com>
Co-authored-by: r350178982 <32759763+r350178982@users.noreply.github.com>
2025-02-21 18:12:25 +08:00

107 lines
3.8 KiB
JavaScript

import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Link } from '@gatsbyjs/reach-router';
import { siteRoot, gettext } from '../../utils/constants';
import MainPanelTopbar from './main-panel-topbar';
import { Button } from 'reactstrap';
import ModalPortal from '../../components/modal-portal';
import OrgLogsExportExcelDialog from '../../components/dialog/org-admin-logs-export-excel-dialog';
class OrgLogs extends Component {
constructor(props) {
super(props);
this.state = {
isExportExcelDialogOpen: false,
logType: '',
};
}
componentDidMount() {
let href = window.location.href.split('/');
let logtype = href[href.length - 2];
if (logtype === 'logadmin') {
logtype = 'fileaudit';
}
this.setState({ logType: logtype });
}
toggleExportExcelDialog = () => {
this.setState({ isExportExcelDialogOpen: !this.state.isExportExcelDialogOpen });
};
tabItemClick = (param) => {
this.setState({
logType: param
});
this.props.tabItemClick(param);
};
render() {
const { isExportExcelDialogOpen, logType } = this.state;
return (
<Fragment>
{this.props.currentTab === 'repo-transfer' ?
<MainPanelTopbar />
:
<MainPanelTopbar>
<Button className="btn btn-secondary operation-item" onClick={this.toggleExportExcelDialog}>{gettext('Export Excel')}</Button>
</MainPanelTopbar>
}
<div className="main-panel-center flex-row">
<div className="cur-view-container h-100">
<div className="cur-view-path org-user-nav">
<ul className="nav">
<li className="nav-item" onClick={() => this.tabItemClick('fileaudit')}>
<Link
className={`nav-link ${this.props.currentTab === 'fileaudit' ? 'active' : ''}`}
to={siteRoot + 'org/logadmin/'} title={gettext('File Access')}>{gettext('File Access')}
</Link>
</li>
<li className="nav-item" onClick={() => this.tabItemClick('file-update')}>
<Link
className={`nav-link ${this.props.currentTab === 'file-update' ? 'active' : ''}`}
to={siteRoot + 'org/logadmin/file-update/'} title={gettext('File Update')}>{gettext('File Update')}
</Link>
</li>
<li className="nav-item" onClick={() => this.tabItemClick('perm-audit')}>
<Link
className={`nav-link ${this.props.currentTab === 'perm-audit' ? 'active' : ''}`}
to={siteRoot + 'org/logadmin/perm-audit/'} title={gettext('Permission')}>{gettext('Permission')}
</Link>
</li>
<li className="nav-item" onClick={() => this.tabItemClick('repo-transfer')}>
<Link
className={`nav-link ${this.props.currentTab === 'repo-transfer' ? 'active' : ''}`}
to={siteRoot + 'org/logadmin/repo-transfer/'} title={gettext('Repo Transfer')}>{gettext('Repo Transfer')}
</Link>
</li>
</ul>
</div>
<div className="h-100 o-auto">
{this.props.children}
</div>
</div>
</div>
{isExportExcelDialogOpen &&
<ModalPortal>
<OrgLogsExportExcelDialog
logType={logType}
toggle={this.toggleExportExcelDialog}
/>
</ModalPortal>
}
</Fragment>
);
}
}
const propTypes = {
currentTab: PropTypes.string.isRequired,
tabItemClick: PropTypes.func.isRequired,
children: PropTypes.any.isRequired,
};
OrgLogs.propTypes = propTypes;
export default OrgLogs;