From e85ade9ffb263ac7fcac0475976036d92e1f3ff1 Mon Sep 17 00:00:00 2001 From: tingfuyeh Date: Thu, 8 Dec 2022 16:49:44 +0800 Subject: [PATCH 1/7] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=86=94=E6=96=AD?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 103308bfc8f0ed48bda7b43b4813e871d0bd70d1 Mon Sep 17 00:00:00 2001 From: chuntaojun Date: Thu, 29 Aug 2024 17:50:19 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix:=E5=AE=8C=E5=96=84=E9=89=B4=E6=9D=83?= =?UTF-8?q?=E7=9A=84=E9=A1=B5=E9=9D=A2=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../accessLimiting/getColumns.tsx | 6 +- .../administration/accessLimiting/model.ts | 2 + .../breaker/faultDetect/getColumns.tsx | 2 + .../faultDetect/operations/CreateDuck.ts | 2 + .../breaker/faultDetect/types.ts | 2 + .../administration/breaker/getColumns.tsx | 3 + .../breaker/operations/CreateDuck.ts | 2 + .../polaris/administration/breaker/types.ts | 2 + .../dynamicRoute/customRoute/getColumns.tsx | 46 +++++----- .../dynamicRoute/customRoute/model.ts | 2 + web/src/polaris/auth/model.ts | 88 ++++++++++++++----- web/src/polaris/auth/policy/Page.tsx | 9 +- .../fileGroup/detail/file/Page.tsx | 4 +- .../fileGroup/detail/version/getColumns.tsx | 3 +- .../configuration/fileGroup/getColumns.tsx | 4 +- .../polaris/configuration/fileGroup/types.ts | 1 + web/src/polaris/namespace/getColumns.tsx | 2 +- .../detail/circuitBreaker/getColumns.tsx | 6 +- .../polaris/service/detail/instance/Page.tsx | 6 +- .../service/detail/instance/PageDuck.ts | 1 + .../service/detail/instance/getColumns.tsx | 6 +- .../polaris/service/detail/instance/types.ts | 1 + .../service/detail/route/getColumns.tsx | 6 +- web/src/polaris/service/getColumns.tsx | 4 +- web/src/polaris/service/types.ts | 2 + web/src/polaris/serviceAlias/getColumns.tsx | 4 +- web/src/polaris/serviceAlias/model.ts | 3 + 27 files changed, 146 insertions(+), 73 deletions(-) diff --git a/web/src/polaris/administration/accessLimiting/getColumns.tsx b/web/src/polaris/administration/accessLimiting/getColumns.tsx index d3b0926e..e80d75d8 100644 --- a/web/src/polaris/administration/accessLimiting/getColumns.tsx +++ b/web/src/polaris/administration/accessLimiting/getColumns.tsx @@ -79,10 +79,12 @@ export default ({ creators }: AccessLimitingDuck): Column[] => [ id: string text: string fn: (dispatch?: Dispatch, e?) => void + disabled?: boolean }[] = [ { id: 'switchStatus', text: x.disable ? '禁用' : '启用', + disabled: !x.editable, fn: dispatch => { const swtichStatusAction = x.disable ? SwitchStatusAction.disable : SwitchStatusAction.start dispatch(creators.switchStatus(x.id, x.name, swtichStatusAction)) @@ -91,6 +93,7 @@ export default ({ creators }: AccessLimitingDuck): Column[] => [ { id: 'modify', text: '编辑', + disabled:!x.editable, fn: dispatch => { dispatch(creators.modify(x)) }, @@ -98,6 +101,7 @@ export default ({ creators }: AccessLimitingDuck): Column[] => [ { id: 'remove', text: '删除', + disabled:!x.deleteable, fn: dispatch => { dispatch(creators.delete(x)) }, @@ -106,7 +110,7 @@ export default ({ creators }: AccessLimitingDuck): Column[] => [ return ( {actions.map(action => ( - + ))} ) diff --git a/web/src/polaris/administration/accessLimiting/model.ts b/web/src/polaris/administration/accessLimiting/model.ts index 94770d03..d4817ad1 100644 --- a/web/src/polaris/administration/accessLimiting/model.ts +++ b/web/src/polaris/administration/accessLimiting/model.ts @@ -81,6 +81,8 @@ export interface RateLimit { resource: string // 限流资源 // priority: number // 限流规则优先级 // labels: Record + editable: boolean + deleteable: boolean } export interface DescribeLimitRulesResult { diff --git a/web/src/polaris/administration/breaker/faultDetect/getColumns.tsx b/web/src/polaris/administration/breaker/faultDetect/getColumns.tsx index ae96a3d2..afdb439d 100644 --- a/web/src/polaris/administration/breaker/faultDetect/getColumns.tsx +++ b/web/src/polaris/administration/breaker/faultDetect/getColumns.tsx @@ -82,12 +82,14 @@ export default (props: DuckCmpProps): Column[] return ( { router.navigate(`/faultDetect-create?id=${x.id}`) }} /> { dispatch(creators.remove(x)) diff --git a/web/src/polaris/administration/breaker/faultDetect/operations/CreateDuck.ts b/web/src/polaris/administration/breaker/faultDetect/operations/CreateDuck.ts index 6f97be92..ebd40735 100644 --- a/web/src/polaris/administration/breaker/faultDetect/operations/CreateDuck.ts +++ b/web/src/polaris/administration/breaker/faultDetect/operations/CreateDuck.ts @@ -285,6 +285,8 @@ export class BreakerRuleCreateDuck extends Form { send: '', receive: [], }, + editable: true, + deleteable: true } } diff --git a/web/src/polaris/administration/breaker/faultDetect/types.ts b/web/src/polaris/administration/breaker/faultDetect/types.ts index d6910157..07b373c9 100644 --- a/web/src/polaris/administration/breaker/faultDetect/types.ts +++ b/web/src/polaris/administration/breaker/faultDetect/types.ts @@ -33,6 +33,8 @@ export interface FaultDetectRule { } ctime?: string mtime?: string + editable: boolean + deleteable: boolean } export enum FaultDetectProtocol { HTTP = 'HTTP', diff --git a/web/src/polaris/administration/breaker/getColumns.tsx b/web/src/polaris/administration/breaker/getColumns.tsx index b3c38d78..a93af6bc 100644 --- a/web/src/polaris/administration/breaker/getColumns.tsx +++ b/web/src/polaris/administration/breaker/getColumns.tsx @@ -96,12 +96,14 @@ export default (props: DuckCmpProps): Column { dispatch(creators.toggle(x)) }} /> { const type = checkRuleType(x?.level) @@ -109,6 +111,7 @@ export default (props: DuckCmpProps): Column { dispatch(creators.remove(x)) diff --git a/web/src/polaris/administration/breaker/operations/CreateDuck.ts b/web/src/polaris/administration/breaker/operations/CreateDuck.ts index 7f67219b..7cc6861d 100644 --- a/web/src/polaris/administration/breaker/operations/CreateDuck.ts +++ b/web/src/polaris/administration/breaker/operations/CreateDuck.ts @@ -349,6 +349,8 @@ export class BreakerRuleCreateDuck extends Form { body: '', }, }, + editable: true, + deleteable: true } } diff --git a/web/src/polaris/administration/breaker/types.ts b/web/src/polaris/administration/breaker/types.ts index 2fc9ad10..e06f27c9 100644 --- a/web/src/polaris/administration/breaker/types.ts +++ b/web/src/polaris/administration/breaker/types.ts @@ -28,6 +28,8 @@ export interface CircuitBreakerRule { ctime?: string mtime?: string etime?: string + editable: boolean + deleteable: boolean } export interface ErrorCondition { inputType: string diff --git a/web/src/polaris/administration/dynamicRoute/customRoute/getColumns.tsx b/web/src/polaris/administration/dynamicRoute/customRoute/getColumns.tsx index a5990c24..fa36cc48 100644 --- a/web/src/polaris/administration/dynamicRoute/customRoute/getColumns.tsx +++ b/web/src/polaris/administration/dynamicRoute/customRoute/getColumns.tsx @@ -97,34 +97,38 @@ export default ( id: string text: string fn: (dispatch?: Dispatch, e?) => void + disabled: boolean }[] = [ - { - id: 'switchStatus', - text: x.enable ? '禁用' : '启用', - fn: dispatch => { - const swtichStatusAction = x.enable ? SwitchStatusAction.disable : SwitchStatusAction.start - dispatch(creators.switchStatus(x.id, x.name, swtichStatusAction)) + { + id: 'switchStatus', + text: x.enable ? '禁用' : '启用', + fn: dispatch => { + const swtichStatusAction = x.enable ? SwitchStatusAction.disable : SwitchStatusAction.start + dispatch(creators.switchStatus(x.id, x.name, swtichStatusAction)) + }, + disabled: !x.editable, }, - }, - { - id: 'modify', - text: '编辑', - fn: dispatch => { - dispatch(creators.modify(x)) + { + id: 'modify', + text: '编辑', + fn: dispatch => { + dispatch(creators.modify(x)) + }, + disabled: !x.editable, }, - }, - { - id: 'remove', - text: '删除', - fn: dispatch => { - dispatch(creators.delete(x)) + { + id: 'remove', + text: '删除', + fn: dispatch => { + dispatch(creators.delete(x)) + }, + disabled: !x.deleteable, }, - }, - ] + ] return ( {actions.map(action => ( - + ))} ) diff --git a/web/src/polaris/administration/dynamicRoute/customRoute/model.ts b/web/src/polaris/administration/dynamicRoute/customRoute/model.ts index 5c573880..8b71dfc7 100644 --- a/web/src/polaris/administration/dynamicRoute/customRoute/model.ts +++ b/web/src/polaris/administration/dynamicRoute/customRoute/model.ts @@ -11,6 +11,8 @@ export interface CustomRoute { mtime: string etime: string routing_policy: string + editable: boolean + deleteable: boolean } export interface DescribeCustomRouteParams { diff --git a/web/src/polaris/auth/model.ts b/web/src/polaris/auth/model.ts index 58b41b26..d62ae3fe 100644 --- a/web/src/polaris/auth/model.ts +++ b/web/src/polaris/auth/model.ts @@ -189,32 +189,13 @@ export interface DescribeGovernanceUserTokenResult { export type ModifyGovernanceServicesResult = {} /** 修改治理中心鉴权策略 */ -export async function modifyGovernanceStrategy(params: ModifyGovernanceStrategyParams[]) { +export async function modifyGovernanceStrategy(params: ModifyAuthStrategy[]) { const result = await putApiRequest({ action: 'core/v1/auth/strategies', data: params, }) return result.responses.every(item => Number(item.code) === SuccessCode) } -/** **ModifyGovernanceStrategy入参** - -修改治理中心鉴权策略 */ -export interface ModifyGovernanceStrategyParams { - /** 策略名称 */ - id: string - - /** 涉及的用户 or 用户组 */ - principals?: Principal - - /** 资源操作权限 */ - action?: string - - /** 简单描述 */ - comment?: string - - /** 策略关联的资源 */ - resources?: StrategyResource -} /** **ModifyGovernanceStrategy出参** 修改治理中心鉴权策略 */ @@ -680,6 +661,18 @@ export interface AuthStrategy { resources?: StrategyResource default_strategy?: boolean + + /** 鉴权规则来源 */ + source?: string + + /** 服务端接口 */ + functions?: string[] + + /** 策略生效的资源标签 */ + resource_labels?: string[] + + /** 策略资源标签 */ + metadata?: Record } /** 鉴权策略涉及的用户 or 用户组信息 */ export interface Principal { @@ -688,6 +681,9 @@ export interface Principal { /** 用户组ID列表 */ groups?: PrincipalEntry[] + + /** 角色ID列表 */ + roles?: PrincipalEntry[] } /** 鉴权策略资源信息 */ export interface StrategyResource { @@ -702,6 +698,33 @@ export interface StrategyResource { /** 配置组ID列表 */ config_groups?: StrategyResourceEntry[] + + /** 路由规则ID列表 */ + router_rules?: StrategyResourceEntry[] + + /** 泳道规则ID列表 */ + lane_rules?: StrategyResourceEntry[] + + /** 熔断规则ID列表 */ + circuitbreaker_rules?: StrategyResourceEntry[] + + /** 主动探测规则ID列表 */ + faultdetect_rules?: StrategyResourceEntry[] + + /** 限流规则ID列表 */ + ratelimit_rules?: StrategyResourceEntry[] + + /** 用户ID列表 */ + users?: StrategyResourceEntry[] + + /** 用户组ID列表 */ + user_groups?: StrategyResourceEntry[] + + /** 资源鉴权规则ID列表 */ + auth_policies?: StrategyResourceEntry[] + + /** 角色ID列表 */ + roles?: StrategyResourceEntry[] } /** 资源 */ export interface StrategyResourceEntry { @@ -841,14 +864,37 @@ export interface ModifyAuthStrategy { remove_resources?: StrategyResource /** 鉴权策略动作 */ - action?: string[] + action?: string /** 简单描述 */ comment?: string /** 腾讯云主账户ID */ owner?: string + + /** 鉴权规则来源 */ + source?: string + + /** 服务端接口 */ + functions?: string[] + + /** 策略生效的资源标签 */ + resource_labels?: StrategyResourceLabel[] + + /** 策略资源标签 */ + metadata?: Record +} + +export interface StrategyResourceLabel { + /** 标签键 */ + key?: string + /** 标签值 */ + value?: string + /** 比较类型 */ + compare_type?: string } + + export interface PrincipalEntry { /** 用户ID|用户组ID */ id: string diff --git a/web/src/polaris/auth/policy/Page.tsx b/web/src/polaris/auth/policy/Page.tsx index 5cb95501..f10d3923 100644 --- a/web/src/polaris/auth/policy/Page.tsx +++ b/web/src/polaris/auth/policy/Page.tsx @@ -381,20 +381,13 @@ export default function AuthPage(props: DuckCmpProps) { ) - const [alertVisible, setAlertVisible] = React.useState(true); return isInDetailpage ? ( contentElement ) : ( }> - setAlertVisible(false)} - extra={ - - }>{authStatusMsg} + {authStatusMsg} {contentElement} diff --git a/web/src/polaris/configuration/fileGroup/detail/file/Page.tsx b/web/src/polaris/configuration/fileGroup/detail/file/Page.tsx index 8aad9513..396c21c3 100644 --- a/web/src/polaris/configuration/fileGroup/detail/file/Page.tsx +++ b/web/src/polaris/configuration/fileGroup/detail/file/Page.tsx @@ -478,7 +478,7 @@ function renderTree(props, folder, path: string, currPath: string) { const { hitPath, expandedIds, - data: { editable }, + data: { editable, deleteable }, } = selector(store) if (!(Object.keys(node).length > 0)) { return