fix: permission verification of some menu is invalid (#21)

* fix: add `SMTP SERVER` to `Feature privileges` in role settings
* fix: permission verification of some menu is invalid

---------

Co-authored-by: yaojiping <yaojiping@infini.ltd>
This commit is contained in:
yaojp123 2024-12-10 15:54:44 +08:00 committed by GitHub
parent 9798ec9eb2
commit bbf4c10c89
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 30 additions and 29 deletions

View File

@ -162,7 +162,6 @@ export default [
name: "alerting",
icon: "alert",
authority: ["alerting"],
isPro: true,
routes: [
{
path: "/alerting/message/:message_id",
@ -386,12 +385,17 @@ export default [
"system.credential:read",
"system.security:all",
"system.security:read",
"system.audit_logs:all",
"system.audit_logs:read",
"system.smtp_server:all",
"system.smtp_server:read"
],
routes: [
{
path: "/system/email_server",
name: "email_server",
name: "smtp_server",
component: "./System/Email/Server",
authority: ["system.smtp_server:all", "system.smtp_server:read"],
},
{
path: "/system/credential",

View File

@ -7,7 +7,6 @@ import { formatMessage } from 'umi/locale';
import pathToRegexp from 'path-to-regexp';
import { urlToList } from '../_utils/pathTools';
import styles from './index.less';
import Pro from '../Icons/Pro';
const { SubMenu } = Menu;
@ -89,7 +88,6 @@ export default class BaseMenu extends PureComponent {
<span style={{ display: 'flex', alignItems: 'center'}}>
{getIcon(item.icon)}
<span style={{ overflow: 'hidden', textOverflow: 'ellipsis'}}>{name}</span>
{this.renderProIcon(item)}
</span>
) : (
name
@ -140,7 +138,6 @@ export default class BaseMenu extends PureComponent {
<span style={{ display: 'flex', alignItems: 'center'}}>
{icon}
<span style={{ overflow: 'hidden', textOverflow: 'ellipsis'}}>{name}</span>
{this.renderProIcon(item)}
</span>
</Link>
);
@ -163,13 +160,6 @@ export default class BaseMenu extends PureComponent {
return `/${path || ''}`.replace(/\/+/g, '/');
};
renderProIcon = (item) => {
if (this.props.collapsed || !item.isPro) return null
return (
<Icon style={{ fontSize: 32, marginLeft: 6 }} component={Pro}/>
)
}
render() {
const {
openKeys,

View File

@ -271,7 +271,7 @@ export default {
"menu.system.reset_password": "RESET",
"menu.system.credential": "CREDENTIAL",
"menu.system.email_server": "SMTP SERVER",
"menu.system.smtp_server": "SMTP SERVER",
"menu.form": "Form",
"menu.form.basicform": "Basic Form",

View File

@ -1,6 +1,6 @@
export default {
"settings.email.server.empty.label1": "You can add mail servers here",
"settings.email.server.empty.label1": "You can add email servers here",
"settings.email.server.empty.label2":
"The alart center can send a notification to the recipient through the designated mail server",
"settings.email.server.empty.button.new": "Add mail server",
"settings.email.server.empty.button.new": "Add email server",
};

View File

@ -276,7 +276,7 @@ export default {
"menu.system.reset_password": "重置密码",
"menu.system.credential": "凭据管理",
"menu.system.email_server": "邮件服务器",
"menu.system.smtp_server": "邮件服务器",
"menu.form": "表单页",
"menu.form.basicform": "基础表单",

View File

@ -84,6 +84,7 @@ import Layout from "./View/Layout";
import request from "@/utils/request";
import { cloneDeep } from "lodash";
import { getTimezone } from "@/utils/utils";
import { hasAuthority } from "@/utils/authority";
const SidebarMemoized = React.memo(DiscoverSidebar);
@ -1553,10 +1554,13 @@ const DiscoverUI = (props) => {
The current cluster has no indices or views
</span>
}
image={Empty.PRESENTED_IMAGE_SIMPLE}
>
<Link to={"/data/index"}>
<Button type="primary">Create Now</Button>
</Link>
{hasAuthority("data.index:all") && (
<Link to={"/data/index"}>
<Button type="primary">Create Now</Button>
</Link>
)}
</Empty>
</Card>
)

View File

@ -18,10 +18,11 @@ import { ESPrefix } from "@/services/common";
import { formatMessage } from "umi/locale";
import { getAuthority, hasAuthority } from "@/utils/authority";
import EditLayout from "./View/EditLayout";
import { Card, Empty } from "antd";
const IndexPatterns = (props) => {
if (!props.selectedCluster?.id) {
return null;
return <Card ><Empty image={Empty.PRESENTED_IMAGE_SIMPLE} /></Card>;
}
const history = useMemo(() => {
return new ScopedHistory(props.history, "/data/views");
@ -45,9 +46,6 @@ const IndexPatterns = (props) => {
};
initFetch();
}, [props.selectedCluster]);
if (!props.selectedCluster?.id) {
return null;
}
return (
<Router history={history}>

View File

@ -6,13 +6,13 @@ import Table from "./Table";
import Overview from "@/components/Overview";
const facetLabels = {
"metadata.cluster_name": "cluster",
"metadata.index_name": "index",
"metadata.labels.health_status": "health",
"metadata.labels.state": "state",
};
const aggsParams = [
{ field: "metadata.cluster_name", params: { size: 500 } },
{ field: "metadata.index_name", params: { size: 500 } },
{ field: "metadata.labels.state", params: { size: 100 } },
{ field: "metadata.labels.health_status", params: { size: 150 } },
];

View File

@ -1,6 +1,7 @@
import { Empty, Button } from "antd";
import EmailServer from "@/components/Icons/EmailServer";
import { formatMessage } from "umi/locale";
import { hasAuthority } from "@/utils/authority";
export default ({ onAddClick }) => {
const onClick = () => {
@ -23,9 +24,13 @@ export default ({ onAddClick }) => {
</div>
}
>
<Button type="primary" onClick={onClick}>
{formatMessage({ id: "settings.email.server.empty.button.new" })}
</Button>
{
hasAuthority("system.smtp_server:all") && (
<Button type="primary" onClick={onClick}>
{formatMessage({ id: "settings.email.server.empty.button.new" })}
</Button>
)
}
</Empty>
);
};

View File

@ -96,7 +96,7 @@ export const menuData = [
key: "system",
children: [
{
key: "system.command",
key: "system.smtp_server",
},
{
key: "system.security",