diff --git a/server/service/menu_default_data.go b/server/service/menu_default_data.go index 7073fb9..ca81afe 100644 --- a/server/service/menu_default_data.go +++ b/server/service/menu_default_data.go @@ -210,7 +210,9 @@ var DefaultMenu = []*model.Menu{ model.NewMenu("job-run", "执行", "job", model.NewPermission("POST", "/jobs/:id/exec"), ), - model.NewMenu("job-change-status", "开启/关闭", "job"), + model.NewMenu("job-change-status", "开启/关闭", "job", + model.NewPermission("POST", "/jobs/:id/change-status"), + ), model.NewMenu("job-log", "日志", "job", model.NewPermission("GET", "/jobs/:id/logs/paging"), ), @@ -309,6 +311,9 @@ var DefaultMenu = []*model.Menu{ model.NewMenu("user-change-password", "修改密码", "user", model.NewPermission("POST", "/users/:id/change-password"), ), + model.NewMenu("user-enable-disable", "启用/禁用", "user", + model.NewPermission("PATCH", "/users/:id/status"), + ), model.NewMenu("user-reset-totp", "重置双因素认证", "user", model.NewPermission("POST", "/users/:id/reset-totp"), ), @@ -376,6 +381,7 @@ var DefaultMenu = []*model.Menu{ model.NewPermission("GET", "/authorised/selected"), model.NewPermission("GET", "/assets"), model.NewPermission("GET", "/strategies"), + model.NewPermission("GET", "/command-filters"), ), model.NewMenu("user-group-unbind-asset", "移除", "user-group-authorised-asset", model.NewPermission("DELETE", "/authorised/:id"), @@ -383,6 +389,36 @@ var DefaultMenu = []*model.Menu{ model.NewMenu("authorised", "授权策略", "root"), + model.NewMenu("command-filter", "命令过滤", "authorised", + model.NewPermission("GET", "/command-filters/paging"), + ), + model.NewMenu("command-filter-add", "增加", "command-filter", + model.NewPermission("POST", "/command-filters"), + ), + model.NewMenu("command-filter-del", "删除", "command-filter", + model.NewPermission("DELETE", "/command-filters/:id"), + ), + model.NewMenu("command-filter-edit", "编辑", "command-filter", + model.NewPermission("GET", "/command-filters/:id"), + model.NewPermission("PUT", "/command-filters/:id"), + ), + model.NewMenu("command-filter-detail", "详情", "command-filter", + model.NewPermission("GET", "/command-filters/:id"), + ), + model.NewMenu("command-filter-rule", "规则", "command-filter-detail", + model.NewPermission("GET", "/command-filter-rules/:id"), + ), + model.NewMenu("command-filter-rule-add", "增加", "command-filter-rule", + model.NewPermission("POST", "/command-filter-rules"), + ), + model.NewMenu("command-filter-rule-put", "修改", "command-filter-rule", + model.NewPermission("GET", "/command-filter-rules/:id"), + model.NewPermission("PUT", "/command-filter-rules/:id"), + ), + model.NewMenu("command-filter-rule-del", "删除", "command-filter-rule", + model.NewPermission("DELETE", "/command-filter-rules/:id"), + ), + model.NewMenu("strategy", "授权策略", "authorised", model.NewPermission("GET", "/strategies/paging"), ), @@ -403,6 +439,10 @@ var DefaultMenu = []*model.Menu{ model.NewMenu("setting", "系统设置", "root", model.NewPermission("GET", "/properties"), model.NewPermission("PUT", "/properties"), + model.NewPermission("POST", "/ldap-user-sync"), + model.NewPermission("GET", "/license"), + model.NewPermission("POST", "/license"), + model.NewPermission("GET", "/license/machine-id"), ), model.NewMenu("info", "个人中心", "root"), } diff --git a/web/src/App.js b/web/src/App.js index b0abeda..8185308 100644 --- a/web/src/App.js +++ b/web/src/App.js @@ -51,7 +51,6 @@ const Credential = React.lazy(() => import("./components/asset/Credential")); const Job = React.lazy(() => import("./components/devops/Job")); const LoginLog = React.lazy(() => import("./components/log-audit/LoginLog")); -const StorageLog = React.lazy(() => import("./components/log-audit/StorageLog")); const Security = React.lazy(() => import("./components/security/Security")); const Storage = React.lazy(() => import("./components/devops/Storage")); @@ -99,7 +98,6 @@ const App = () => { }/> }/> }/> - }/> }/> }/> }/> diff --git a/web/src/components/access/Guacd.js b/web/src/components/access/Guacd.js index 42242e6..3a63c65 100644 --- a/web/src/components/access/Guacd.js +++ b/web/src/components/access/Guacd.js @@ -30,6 +30,8 @@ const STATE_CONNECTED = 3; const STATE_DISCONNECTING = 4; const STATE_DISCONNECTED = 5; +let clientState = STATE_IDLE; + const Guacd = () => { let [searchParams] = useSearchParams(); @@ -46,13 +48,10 @@ const Guacd = () => { height = window.innerHeight; } - const [box, setBox] = useState({width: width, height: height}); - let [guacd, setGuacd] = useState({}); let [session, setSession] = useState({}); let [clipboardText, setClipboardText] = useState(''); let [fullScreened, setFullScreened] = useState(false); - let [clientState, setClientState] = useState(STATE_IDLE); let [clipboardVisible, setClipboardVisible] = useState(false); let [fileSystemVisible, setFileSystemVisible] = useState(false); @@ -201,7 +200,7 @@ const Guacd = () => { }); }) } catch (e) { - // console.error(e); + console.error('复制剪贴板失败', e); } } }; @@ -228,7 +227,6 @@ const Guacd = () => { } else { let reader = new Guacamole.BlobReader(stream, mimetype); reader.onend = () => { - console.log(stream, mimetype, reader) setClipboardText(reader.getBlob()); } } @@ -264,7 +262,7 @@ const Guacd = () => { } const onClientStateChange = (state, sessionId) => { - setClientState(state); + clientState = state; const key = 'message'; switch (state) { case STATE_IDLE: @@ -328,7 +326,6 @@ const Guacd = () => { } const onError = (status) => { - console.log('通道异常。', status); switch (status.code) { case 256: showMessage('未支持的访问'); @@ -439,10 +436,9 @@ const Guacd = () => { return (
-
diff --git a/web/src/components/log-audit/StorageLog.js b/web/src/components/log-audit/StorageLog.js deleted file mode 100644 index 8e6c3ad..0000000 --- a/web/src/components/log-audit/StorageLog.js +++ /dev/null @@ -1,171 +0,0 @@ -import React, {useState} from 'react'; -import {Button, Layout, Modal, Popconfirm} from "antd"; -import {ProTable} from "@ant-design/pro-components"; -import storageLogApi from "../../api/storage-log"; -import {Link} from "react-router-dom"; -import ColumnState, {useColumnState} from "../../hook/column-state"; -import Show from "../../dd/fi/show"; - -const api = storageLogApi; -const {Content} = Layout; - -const actionRef = React.createRef(); - -const StorageLog = () => { - - let [total, setTotal] = useState(0); - const [columnsStateMap, setColumnsStateMap] = useColumnState(ColumnState.STORAGE_LOG); - - const columns = [ - { - dataIndex: 'index', - valueType: 'indexBorder', - width: 48, - }, - { - title: '资产名称', - key: 'assetName', - dataIndex: 'assetName', - hideInSearch: true, - render: ((text, record) => { - return {text} - }) - }, - { - title: '文件/文件夹名称', - key: 'fileName', - dataIndex: 'fileName', - hideInSearch: true, - }, - { - title: '操作类型', - key: 'action', - dataIndex: 'action', - valueType: 'select', - valueEnum: { - rm: {text: '删除'}, - upload: { - text: '上传', - }, - download: { - text: '下载', - }, - mkdir: { - text: '创建文件夹', - }, - rename: { - text: '重命名', - }, - } - }, - { - title: '操作用户', - key: 'userName', - dataIndex: 'userName', - hideInSearch: true, - render: ((text, record) => { - return {text} - }) - }, - { - title: '操作日期', - key: 'created', - dataIndex: 'created', - hideInSearch: true, - }, - { - title: '操作', - valueType: 'option', - key: 'option', - render: (text, record, _, action) => [ - - { - await api.deleteById(record.id); - actionRef.current.reload(); - }} - okText="确认" - cancelText="取消" - > - 删除 - - , - ], - }, - ]; - - return ( -
- - { - - let field = ''; - let order = ''; - if (Object.keys(sort).length > 0) { - field = Object.keys(sort)[0]; - order = Object.values(sort)[0]; - } - - let queryParams = { - pageIndex: params.current, - pageSize: params.pageSize, - action: params.action, - field: field, - order: order - } - let result = await api.getPaging(queryParams); - setTotal(result['total']); - return { - data: result['items'], - success: true, - total: result['total'] - }; - }} - rowKey="id" - search={{ - labelWidth: 'auto', - }} - pagination={{ - pageSize: 10, - }} - dateFormatter="string" - headerTitle="文件操作日志" - toolBarRender={() => [ - - - , - ]} - /> - -
- ); -} - -export default StorageLog; \ No newline at end of file