- 修复弹出粘贴板导致键盘不可输入的问题

- 修复首次打开页面白屏的问题
- 修复资产授权时用户名称不正确的问题
This commit is contained in:
dushixiang 2022-11-22 22:53:01 +08:00
parent 11c6394358
commit 1b87c4d7d7
6 changed files with 83 additions and 88 deletions

View File

@ -0,0 +1,30 @@
import React from 'react';
import {useQuery} from "react-query";
import accountApi from "../api/account";
import {setCurrentUser} from "../service/permission";
import {useNavigate} from "react-router-dom";
import Landing from "./Landing";
const Redirect = () => {
let navigate = useNavigate();
let infoQuery = useQuery('infoQuery', accountApi.getUserInfo, {
onSuccess: data => {
setCurrentUser(data);
if (data.type === 'user') {
navigate('/my-asset');
} else {
navigate('/dashboard');
}
}
});
return (
<div>
<Landing/>
</div>
);
};
export default Redirect;

View File

@ -115,13 +115,36 @@ const Guacd = () => {
))
}
const sink = new Guacamole.InputSink();
displayEle.appendChild(sink.getElement());
sink.focus();
const keyboard = new Guacamole.Keyboard(sink.getElement());
keyboard.onkeydown = (keysym) => {
console.log('aaa')
client.sendKeyEvent(1, keysym);
if (keysym === 65288) {
return false;
}
};
keyboard.onkeyup = (keysym) => {
client.sendKeyEvent(0, keysym);
};
const sinkFocus = debounce(() => {
sink.focus();
});
const mouse = new Guacamole.Mouse(element);
mouse.onmousedown = mouse.onmouseup = function (mouseState) {
sinkFocus();
client.sendMouseState(mouseState);
}
mouse.onmousemove = function (mouseState) {
sinkFocus();
client.getDisplay().showCursor(false);
mouseState.x = mouseState.x / display.getScale();
mouseState.y = mouseState.y / display.getScale();
@ -134,21 +157,7 @@ const Guacd = () => {
client.sendMouseState(state);
};
const sink = new Guacamole.InputSink();
displayEle.appendChild(sink.getElement());
sink.focus();
const keyboard = new Guacamole.Keyboard(sink.getElement());
keyboard.onkeydown = (keysym) => {
client.sendKeyEvent(1, keysym);
if (keysym === 65288) {
return false;
}
};
keyboard.onkeyup = (keysym) => {
client.sendKeyEvent(0, keysym);
};
setGuacd({
client,
@ -193,6 +202,7 @@ const Guacd = () => {
}
const focus = () => {
console.log(guacd.sink)
if (guacd.sink) {
guacd.sink.focus();
}

View File

@ -2,7 +2,6 @@ import React, {useEffect, useState} from 'react';
import {Form, Modal, Select} from "antd";
import authorisedApi from "../../api/authorised";
import strategyApi from "../../api/strategy";
import commandFilterApi from "../../api/command-filter";
import userApi from "../../api/user";
const formItemLayout = {
@ -15,7 +14,6 @@ const AssetUserBind = ({id, visible, handleOk, handleCancel, confirmLoading}) =>
let [selectedUserIds, setSelectedUserIds] = useState([]);
let [users, setUsers] = useState([]);
let [commandFilters, setCommandFilters] = useState([]);
let [strategies, setStrategies] = useState([]);
useEffect(() => {
@ -31,9 +29,6 @@ const AssetUserBind = ({id, visible, handleOk, handleCancel, confirmLoading}) =>
let strategies = await strategyApi.getAll();
setStrategies(strategies);
let commandFilters = await commandFilterApi.getAll();
setCommandFilters(commandFilters);
}
if (visible) {
@ -50,18 +45,10 @@ const AssetUserBind = ({id, visible, handleOk, handleCancel, confirmLoading}) =>
}
});
let commandFilterOptions = commandFilters.map(item => {
return {
value: item.id,
label: item.name
}
});
let userOptions = users.map(item => {
return {
value: item.id,
label: item.name,
label: item.nickname,
disabled: selectedUserIds.includes(item.id)
}
});
@ -109,21 +96,6 @@ const AssetUserBind = ({id, visible, handleOk, handleCancel, confirmLoading}) =>
</Select>
</Form.Item>
<Form.Item label="命令过滤器" name='commandFilterId' extra={'可控制授权用户允许或不允许执行某些指令'}>
<Select
allowClear
style={{width: '100%'}}
placeholder="此字段不是必填的"
showSearch
filterOption={(input, option) =>
(option?.label ?? '').toLowerCase().includes(input.toLowerCase())
}
options={commandFilterOptions}
>
</Select>
</Form.Item>
<Form.Item label="授权策略" name='strategyId' extra={'可控制授权用户上传下载文件等功能'}>
<Select
allowClear

View File

@ -3,7 +3,6 @@ import {Form, Modal, Select} from "antd";
import authorisedApi from "../../api/authorised";
import userGroupApi from "../../api/user-group";
import strategyApi from "../../api/strategy";
import commandFilterApi from "../../api/command-filter";
const formItemLayout = {
labelCol: {span: 6},
@ -16,7 +15,6 @@ const AssetUserGroupBind = ({id, visible, handleOk, handleCancel, confirmLoading
let [selectedUserGroupIds, setSelectedUserGroupIds] = useState([]);
let [userGroups, setUserGroups] = useState([]);
let [commandFilters, setCommandFilters] = useState([]);
let [strategies, setStrategies] = useState([]);
useEffect(() => {
@ -32,9 +30,6 @@ const AssetUserGroupBind = ({id, visible, handleOk, handleCancel, confirmLoading
let strategies = await strategyApi.getAll();
setStrategies(strategies);
let commandFilters = await commandFilterApi.getAll();
setCommandFilters(commandFilters);
}
if (visible) {
@ -44,6 +39,21 @@ const AssetUserGroupBind = ({id, visible, handleOk, handleCancel, confirmLoading
}
}, [visible])
let strategyOptions = strategies.map(item => {
return {
value: item.id,
label: item.name
}
});
let userGroupOptions = userGroups.map(item => {
return {
value: item.id,
label: item.name,
disabled: selectedUserGroupIds.includes(item.id)
}
});
return (
<Modal
title={'用户授权'}
@ -77,11 +87,13 @@ const AssetUserGroupBind = ({id, visible, handleOk, handleCancel, confirmLoading
allowClear
style={{width: '100%'}}
placeholder="请选择用户组"
showSearch
filterOption={(input, option) =>
(option?.label ?? '').toLowerCase().includes(input.toLowerCase())
}
options={userGroupOptions}
>
{userGroups.map(item => {
return <Select.Option key={item.id}
disabled={selectedUserGroupIds.includes(item.id)}>{item.name}</Select.Option>
})}
</Select>
</Form.Item>
@ -90,10 +102,13 @@ const AssetUserGroupBind = ({id, visible, handleOk, handleCancel, confirmLoading
allowClear
style={{width: '100%'}}
placeholder="此字段不是必填的"
showSearch
filterOption={(input, option) =>
(option?.label ?? '').toLowerCase().includes(input.toLowerCase())
}
options={strategyOptions}
>
{strategies.map(item => {
return <Select.Option key={item.id}>{item.name}</Select.Option>
})}
</Select>
</Form.Item>

View File

@ -2,7 +2,6 @@ import React, {useEffect, useState} from 'react';
import {Form, Modal, Select} from "antd";
import assetApi from "../../../api/asset";
import strategyApi from "../../../api/strategy";
import commandFilterApi from "../../../api/command-filter";
import authorisedApi from "../../../api/authorised";
const formItemLayout = {
@ -15,7 +14,6 @@ const UserAuthorised = ({type, id, visible, handleOk, handleCancel, confirmLoadi
let [selectedAssetIds, setSelectedAssetIds] = useState([]);
let [assets, setAssets] = useState([]);
let [commandFilters, setCommandFilters] = useState([]);
let [strategies, setStrategies] = useState([]);
useEffect(() => {
@ -37,9 +35,6 @@ const UserAuthorised = ({type, id, visible, handleOk, handleCancel, confirmLoadi
let strategies = await strategyApi.GetAll();
setStrategies(strategies);
let commandFilters = await commandFilterApi.GetAll();
setCommandFilters(commandFilters);
}
if (visible) {
@ -56,14 +51,6 @@ const UserAuthorised = ({type, id, visible, handleOk, handleCancel, confirmLoadi
}
});
let commandFilterOptions = commandFilters.map(item=>{
return {
value: item.id,
label: item.name
}
});
let assetOptions = assets.map(item=>{
return {
value: item.id,
@ -115,20 +102,6 @@ const UserAuthorised = ({type, id, visible, handleOk, handleCancel, confirmLoadi
</Select>
</Form.Item>
<Form.Item label="命令过滤器" name='commandFilterId' extra={'可控制授权用户允许或不允许执行某些指令'}>
<Select
allowClear
style={{width: '100%'}}
placeholder="此字段不是必填的"
showSearch
filterOption={(input, option) =>
(option?.label ?? '').toLowerCase().includes(input.toLowerCase())
}
options={commandFilterOptions}
>
</Select>
</Form.Item>
<Form.Item label="授权策略" name='strategyId' extra={'可控制授权用户上传下载文件等功能'}>
<Select
allowClear

View File

@ -2,7 +2,7 @@ import React, {Suspense, useEffect, useState} from 'react';
import {Breadcrumb, Dropdown, Layout, Menu, Popconfirm} from "antd";
import {BugTwoTone, DesktopOutlined, DownOutlined, LogoutOutlined} from "@ant-design/icons";
import {Link, Outlet, useLocation, useNavigate} from "react-router-dom";
import {getCurrentUser, isAdmin} from "../service/permission";
import {getCurrentUser} from "../service/permission";
import LogoWithName from "../images/logo-with-name.png";
import Logo from "../images/logo.png";
import FooterComponent from "./FooterComponent";
@ -135,11 +135,6 @@ const ManagerLayout = () => {
</Menu>
);
if (!isAdmin()) {
window.location.href = "#/my-asset";
return;
}
return (
<Layout className="layout" style={{minHeight: '100vh'}}>
<Sider