Skip to content

[UI] Migrate component authorizations to Sistent permissionKey (Patterns A & B) - #20697

Merged
rishiraj38 merged 12 commits into
meshery:masterfrom
rishiraj38:feat/permission-keys-migration
Jul 21, 2026
Merged

rishiraj38 merged 12 commits into
meshery:masterfrom
rishiraj38:feat/permission-keys-migration

Conversation

@rishiraj38

@rishiraj38 rishiraj38 commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Description

This PR implements a repository-wide migration of the authorization checks in meshery/ui from the legacy imperative disabled={!CAN(...)} pattern to Sistent's declarative permissionKey prop.

By leveraging the @sistent/sistent components' native permission layer, unauthorized components are now dynamically disabled and styled with a PermissionShield overlay showing requisite keys and access metadata upon hover.

Key Changes

  1. Component Migration:

    • Filters: Migrated Filters.columns.tsx, FiltersCard.tsx, FiltersGrid.tsx, Filters.tsx, and YAMLEditor.tsx. Updated TooltipIcon wrapper to forward permissions to internal elements.
    • Designs & Patterns: Migrated MesheryPatternCard.tsx, CustomToolbarSelect.tsx, MesheryPatternsToolbar.tsx, YAMLEditor.tsx, and MeshModel/index.tsx.
    • Performance: Migrated PerformanceCard.tsx, PerformanceProfiles.tsx, PerformanceFormActions.tsx (handling mixed disabled checks), and Dashboard.tsx.
    • Connections: Migrated ConnectionTable.options.tsx and dynamically handled multi-permission checking inside ConnectionWizardLauncher.tsx.
    • Environments & Workspaces: Migrated environment-card.tsx, environments/index.tsx, and workspaces/index.tsx.
    • System & Adapters: Migrated MeshAdapterConfigComponent.tsx, DatabaseSummary.tsx, and MesherySettingsEnvButtons.tsx.
    • Header Layout: Replaced <CanShow> wrappers in Header.tsx with Sistent's permissionKey + permissionAction="hide" and the useHasPermission hook.
    • Play Cards: Migrated adapter-play-category-card.tsx to pass runtime { id, function } permission objects.
  2. Visual & Layout Polishing:

    • Shield Positioning Fix: Resolved layout alignment bugs where margins on buttons caused the absolute shield badge overlay to float off-center. Layout margins (marginRight) were cleanly moved to outer wrapping wrappers/containers.
    • Split Button Menu Support: Updated custom dropdown menus (ActionButton.tsx) to forward permissionKey and permissionAction to Sistent's MenuItem children.
Screen.Recording.2026-07-16.at.5.03.36.PM.mov

Fixes #20703

Signed commits

  • Yes, I signed my commits.

Summary by CodeRabbit

  • New Features
    • Updated action controls across database, connections, designs, filters, environments, performance, and workspaces to use consistent permission-based gating via permissionKey.
    • Kubernetes context menu now shows/hides items based on permission status.
  • Bug Fixes
    • Improved consistency of authorization behavior across buttons, menus, toolbars, and editor actions by centralizing permission handling.
  • Tests
    • Expanded UI mocks and assertions to cover permissionKey-driven disabling and ActionButton permission prop forwarding.

Copilot AI review requested due to automatic review settings July 16, 2026 08:21
@github-actions github-actions Bot added the component/ui User Interface label Jul 16, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the permission-checking mechanism across multiple UI components by replacing imperative CAN utility calls with Sistent's declarative permissionKey prop and removing unused imports. The review feedback highlights critical issues where explicit disabled props or hardcoded disabled configurations are retained alongside permissionKey. Keeping these disabled attributes prevents pointer events, which blocks Sistent's hover shield overlay from displaying the necessary access metadata tooltips on hover.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates Meshery UI authorization gating from imperative disabled={!CAN(...)} checks to Sistent’s declarative permissionKey permission layer, enabling consistent disable/hide behavior and permission shield overlays across the UI.

Changes:

  • Replaced many CAN(...)-based disabled props with permissionKey={Keys.*} on Sistent components.
  • Updated permission-related wrappers (e.g., TooltipIcon, split-button menu items) to forward permissionKey / permissionAction.
  • Adjusted layout (moving margins to outer wrappers) to keep permission shield overlays aligned.

Reviewed changes

Copilot reviewed 27 out of 27 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
ui/components/workspaces/index.tsx Migrates “Create workspace” gating to permissionKey and adjusts spacing for shield alignment.
ui/components/performance/PerformanceProfiles.tsx Replaces edit/run/add button CAN(...) disabled checks with permissionKey.
ui/components/performance/PerformanceFormActions.tsx Separates state-based disabled logic from permission gating via permissionKey.
ui/components/performance/PerformanceCard.tsx Migrates action buttons/icons to permissionKey authorization.
ui/components/performance/Dashboard.tsx Migrates “Run Test” gating to permissionKey.
ui/components/MesherySettingsEnvButtons.tsx Migrates “Add Cluster” gating to permissionKey.
ui/components/MeshAdapterConfigComponent.tsx Migrates deploy/connect/undeploy adapter actions to permissionKey.
ui/components/layout/Header/Header.tsx Replaces CanShow wrapper logic with permissionKey + permissionAction="hide" and useHasPermission.
ui/components/filters/YAMLEditor.tsx Migrates update/delete filter icon actions to permissionKey.
ui/components/filters/TooltipIcon.tsx Forwards disabled, permissionKey, and permissionAction into the internal IconButton.
ui/components/filters/FiltersGrid.tsx Migrates import button gating to permissionKey and adjusts margin placement.
ui/components/filters/FiltersCard.tsx Migrates filter card actions (publish/unpublish/download/clone/edit/delete) to permissionKey.
ui/components/filters/Filters.types.ts Extends tooltip icon prop types to include permission metadata.
ui/components/filters/Filters.tsx Migrates import action gating to permissionKey.
ui/components/filters/Filters.columns.tsx Migrates table-row action tooltips/buttons to permissionKey via TooltipIcon.
ui/components/environments/index.tsx Migrates create/delete environment actions to permissionKey and adjusts spacing.
ui/components/environments/environment-card.tsx Migrates edit/delete environment icon actions to permissionKey with selection-based disabling.
ui/components/designs/patterns/YAMLEditor.tsx Migrates design update/delete icon actions to permissionKey.
ui/components/designs/patterns/MesheryPatternsToolbar.tsx Migrates create/import design toolbar buttons to permissionKey and adjusts margin placement.
ui/components/designs/patterns/MesheryPatternCard.tsx Migrates multiple pattern card actions to permissionKey (including option menu support).
ui/components/designs/patterns/CustomToolbarSelect.tsx Migrates bulk delete icon to permissionKey.
ui/components/designs/patterns/ActionButton.tsx Forwards per-option permission props into MenuItem; fixes unstable React key usage.
ui/components/designs/configurator/MeshModel/index.tsx Migrates save/update/delete configurator actions to permissionKey.
ui/components/DatabaseSummary.tsx Migrates reset database action gating to permissionKey.
ui/components/connections/ConnectionWizardLauncher.tsx Adds OR-based permission computation for enabling the launcher and attempts to attach a permissionKey.
ui/components/connections/ConnectionTable.options.tsx Migrates delete connections action to permissionKey.
ui/components/adapter-play-category-card.tsx Migrates adapter play category actions to runtime permissionKey objects.

Comment thread ui/components/environments/index.tsx Resolved
Copilot AI review requested due to automatic review settings July 16, 2026 11:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 32 out of 33 changed files in this pull request and generated 3 comments.

Files not reviewed (1)
  • ui/package-lock.json: Generated file

Comment thread ui/pages/_app.tsx Resolved
Comment on lines 31 to 34
variant="contained"
onClick={() => setIsOpen(true)}
disabled={!canOpenConnectionWizard()}
permissionKey={!hasPermission ? Keys.LifecycleManagementAddCluster : undefined}
data-testid="connection-create-connection"
Comment thread ui/package-lock.json Resolved
Copilot AI review requested due to automatic review settings July 16, 2026 11:24
@rishiraj38
rishiraj38 force-pushed the feat/permission-keys-migration branch from 2744ba0 to 81e0353 Compare July 16, 2026 11:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 30 out of 30 changed files in this pull request and generated no new comments.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 30 out of 30 changed files in this pull request and generated no new comments.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 30 out of 30 changed files in this pull request and generated no new comments.

@leecalcote
leecalcote requested a review from KhushamBansal July 16, 2026 14:15
@rishiraj38 rishiraj38 changed the title [UI] Migrate disabled={!CAN(...)} checks to Sistent permissionKey [UI] Migrate component authorizations to Sistent permissionKey (Patterns A & B) Jul 16, 2026
Copilot AI review requested due to automatic review settings July 16, 2026 16:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 32 out of 32 changed files in this pull request and generated no new comments.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
ui/components/layout/Header/Header.test.tsx (1)

181-181: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Cover the denied-permission path.

This unconditional grant cannot verify that the contexts trigger and menu are absent when Kubernetes-cluster access is denied. Make the mock configurable and add a false case.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ui/components/layout/Header/Header.test.tsx` at line 181, Update the
useHasPermission mock in the Header tests to be configurable instead of always
returning true, then add a denied-permission case returning false that verifies
the Kubernetes-cluster trigger and menu are absent.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ui/components/designs/patterns/ActionButton.tsx`:
- Around line 87-89: Update ui/components/designs/patterns/ActionButton.tsx at
lines 87-89 so the primary Button receives optional permissionKey and
permissionAction props, matching the menu items. Update
ui/components/designs/patterns/MesheryPatternCard.tsx at lines 220-248 to pass
Keys.CatalogManagementValidateDesign and its corresponding validate action to
the default action, ensuring both Validate entry points use the same
authorization guard.

In `@ui/components/performance/Dashboard.tsx`:
- Around line 175-178: Replace the dashboard’s outer CAN permission wrapper with
useHasPermission, using the same performance-management run-test permission key
already passed to StyledButton. Update the surrounding conditional rendering to
use the hook’s result and remove the legacy CAN dependency from the page-level
gate, preserving the existing dashboard behavior.

---

Nitpick comments:
In `@ui/components/layout/Header/Header.test.tsx`:
- Line 181: Update the useHasPermission mock in the Header tests to be
configurable instead of always returning true, then add a denied-permission case
returning false that verifies the Kubernetes-cluster trigger and menu are
absent.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 817e8bd3-b64b-4f86-a8ff-1f90eaaa955a

📥 Commits

Reviewing files that changed from the base of the PR and between 3b35c44 and 8c4c54c.

📒 Files selected for processing (32)
  • ui/components/DatabaseSummary.tsx
  • ui/components/MeshAdapterConfigComponent.tsx
  • ui/components/MesherySettingsEnvButtons.tsx
  • ui/components/adapter-play-category-card.test.tsx
  • ui/components/adapter-play-category-card.tsx
  • ui/components/connections/ConnectionTable.options.tsx
  • ui/components/connections/ConnectionWizardLauncher.tsx
  • ui/components/designs/configurator/MeshModel/index.tsx
  • ui/components/designs/patterns/ActionButton.tsx
  • ui/components/designs/patterns/CustomToolbarSelect.tsx
  • ui/components/designs/patterns/MesheryPatternCard.tsx
  • ui/components/designs/patterns/MesheryPatternsToolbar.tsx
  • ui/components/designs/patterns/YAMLEditor.tsx
  • ui/components/environments/environment-card.test.tsx
  • ui/components/environments/environment-card.tsx
  • ui/components/environments/index.tsx
  • ui/components/filters/Filters.columns.tsx
  • ui/components/filters/Filters.tsx
  • ui/components/filters/Filters.types.ts
  • ui/components/filters/FiltersCard.test.tsx
  • ui/components/filters/FiltersCard.tsx
  • ui/components/filters/FiltersGrid.tsx
  • ui/components/filters/TooltipIcon.tsx
  • ui/components/filters/YAMLEditor.test.tsx
  • ui/components/filters/YAMLEditor.tsx
  • ui/components/layout/Header/Header.test.tsx
  • ui/components/layout/Header/Header.tsx
  • ui/components/performance/Dashboard.tsx
  • ui/components/performance/PerformanceCard.tsx
  • ui/components/performance/PerformanceFormActions.tsx
  • ui/components/performance/PerformanceProfiles.tsx
  • ui/components/workspaces/index.tsx

Comment thread ui/components/performance/Dashboard.tsx Resolved
Copilot AI review requested due to automatic review settings July 21, 2026 05:59

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 33 out of 33 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

ui/components/designs/patterns/ActionButton.tsx:93

  • ActionButton hard-codes each option's data-testid from option.label, even though callers (e.g. MesheryPatternCard) provide explicit 'data-testid' values like pattern-btn-validate. This makes those option test ids ineffective and also creates IDs with spaces (e.g. "Dry Run"). Prefer honoring option['data-testid'] when present, with a fallback to the label-based id.
                <MenuItem
                  data-testid={`action-btn-option-${option.label}`}
                  disabled={option.disabled}

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ui/components/designs/patterns/ActionButton.test.tsx`:
- Around line 94-107: Extend the test for the primary Action button to assert
that permissionKey is forwarded in addition to permissionAction. Expose the
mocked key through the component’s existing test attribute or prop-access
mechanism, then verify the primary button receives the key object/value
represented by keyObj.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: dee47078-1001-4a58-a571-929d6eb83829

📥 Commits

Reviewing files that changed from the base of the PR and between 8c4c54c and 58fb8a5.

📒 Files selected for processing (4)
  • ui/components/designs/patterns/ActionButton.test.tsx
  • ui/components/designs/patterns/ActionButton.tsx
  • ui/components/designs/patterns/MesheryPatternCard.tsx
  • ui/components/performance/Dashboard.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • ui/components/designs/patterns/MesheryPatternCard.tsx

Copilot AI review requested due to automatic review settings July 21, 2026 06:14
@rishiraj38
rishiraj38 force-pushed the feat/permission-keys-migration branch from 58fb8a5 to c1665b9 Compare July 21, 2026 06:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 33 out of 33 changed files in this pull request and generated no new comments.

@github-actions

Copy link
Copy Markdown
Contributor

Commit SHA: c1665b90c114b646e73523197d9cc4718cee9290

END-TO-END TESTS

  • Testing started at: July 21st 2026, 6:29:22 am

📦 Test Result Summary

  • ✅ 63 passed
  • ❌ 0 failed
  • ⚠️ 0 flaked
  • ⏩ 7 skipped

⌛ Duration: 4 minutes and 14 seconds

Overall Result: 👍 All tests passed.

[Show/Hide] Test Result Details
Test Provider Browser Test Case Tags Result
1 Local chromium-local-provider Aggregation Charts are displayed ✅
2 Local chromium-local-provider alias resolution relationship ✅
3 Local chromium-local-provider alias resolution relationship ✅
4 Local chromium-local-provider alias resolution relationship ✅
5 Local chromium-local-provider alias resolution relationship ✅
6 Local chromium-local-provider alias resolution relationship ✅
7 Local chromium-local-provider alias resolution relationship ✅
8 Local chromium-local-provider alias resolution relationship ✅
9 Local chromium-local-provider alias resolution relationship ✅
10 Local chromium-local-provider alias resolution relationship ✅
11 Local chromium-local-provider Charts (Grafana) page loads ✅
12 Local chromium-local-provider config patching correctness relationship ✅
13 Local chromium-local-provider config patching correctness relationship ✅
14 Local chromium-local-provider config patching correctness relationship ✅
15 Local chromium-local-provider config patching correctness relationship ✅
16 Local chromium-local-provider config patching correctness relationship ✅
17 Local chromium-local-provider config patching correctness relationship ✅
18 Local chromium-local-provider config patching correctness relationship ✅
19 Local chromium-local-provider config patching correctness relationship ✅
20 Local chromium-local-provider config patching correctness relationship ✅
21 Local chromium-local-provider Configure Existing Istio adapter through Mesh Adapter URL from Management page unstable ⚠️
22 Local chromium-local-provider Connect to Meshery Istio Adapter and configure it ➖
23 Local chromium-local-provider Create a Model ✅
24 Local chromium-local-provider Delete Kubernetes cluster connections ➖
25 Local chromium-local-provider evaluation idempotency relationship ✅
26 Local chromium-local-provider evaluation idempotency relationship ✅
27 Local chromium-local-provider evaluation idempotency relationship ✅
28 Local chromium-local-provider evaluation idempotency relationship ✅
29 Local chromium-local-provider evaluation idempotency relationship ✅
30 Local chromium-local-provider evaluation idempotency relationship ✅
31 Local chromium-local-provider evaluation idempotency relationship ✅
32 Local chromium-local-provider evaluation idempotency relationship ✅
33 Local chromium-local-provider evaluation idempotency relationship ✅
34 Local chromium-local-provider Import a Model via CSV Import ✅
35 Local chromium-local-provider Import a Model via File Import ✅
36 Local chromium-local-provider Import a Model via Url Import ✅
37 Local chromium-local-provider Logout from current user session ✅
38 Local chromium-local-provider Metrics (Prometheus) page loads ✅
39 Local chromium-local-provider Performance dashboard controls ✅
40 Local chromium-local-provider Ping Istio Adapter unstable ⚠️
41 Local chromium-local-provider Search a Model and Export it ✅
42 Local chromium-local-provider should edit design in Design Configurator ✅
43 Local chromium-local-provider should identify relationships for All Relationships relationship ✅
44 Local chromium-local-provider should identify relationships for Container-Hierarchical-Parent-Alias-Relationship relationship ✅
45 Local chromium-local-provider should identify relationships for deployment-configmap-reference-relationship relationship ✅
46 Local chromium-local-provider should identify relationships for Hierarchical-Parent-Namespace-Relationship relationship ✅
47 Local chromium-local-provider should identify relationships for meshery-design relationship ✅
48 Local chromium-local-provider should identify relationships for pv-pvc-edge-non-binding-reference-relationship relationship ✅
49 Local chromium-local-provider should identify relationships for Service-To-Deployment-Network relationship ✅
50 Local chromium-local-provider should verify Design Configurator page elements ✅
51 Local chromium-local-provider structural integrity relationship ✅
52 Local chromium-local-provider structural integrity relationship ✅
53 Local chromium-local-provider structural integrity relationship ✅
54 Local chromium-local-provider structural integrity relationship ✅
55 Local chromium-local-provider structural integrity relationship ✅
56 Local chromium-local-provider structural integrity relationship ✅
57 Local chromium-local-provider structural integrity relationship ✅
58 Local chromium-local-provider structural integrity relationship ✅
59 Local chromium-local-provider structural integrity relationship ✅
60 Local chromium-local-provider Test if Left Navigation Panel is displayed ✅
61 Local chromium-local-provider Test if Notification button is displayed ✅
62 Local chromium-local-provider Test if Profile button is displayed ✅
63 Local chromium-local-provider Toggle "Send Anonymous Performance Results" ✅
64 Local chromium-local-provider Toggle "Send Anonymous Usage Statistics" ✅
65 Local chromium-local-provider Verify extension nav items use top-level layout ➖
66 Local chromium-local-provider Verify Meshery Adapter for Istio Section ✅
67 Local chromium-local-provider Verify Meshery Catalog Section Details ➖
68 Local chromium-local-provider Verify Meshery Design Embed Details ➖
69 Local chromium-local-provider Verify Meshery Docker Extension Details ➖
70 Local chromium-local-provider Verify Performance Analysis Details ➖
71 Local chromium-local-provider Verify that UI components are displayed ✅
72 Local local-setup authenticate as Local provider ✅

🔗 Relationship Tests

[Show/Hide] Relationship Test Details (18 tests)
Kind Type SubType From To Model Design Name Status
edge binding permission ClusterRole ServiceAccount kubernetes Understanding Relationships ❌
edge binding permission Role ServiceAccount kubernetes Understanding Relationships ❌
edge non-binding network Service Deployment kubernetes service-to-deployment-network ✅
edge non-binding network Service Deployment kubernetes meshery-design-fixture.json ✅
edge non-binding reference ClusterRoleBinding ClusterRole kubernetes meshery-design-fixture.json ❌
hierarchical parent alias Container Deployment kubernetes container-hierarchical-parent-alias-relationship ✅
hierarchical parent alias Container Deployment kubernetes deployment-configmap-reference-relationship ✅
hierarchical parent alias Container Deployment kubernetes service-to-deployment-network ✅
hierarchical parent alias Container Deployment kubernetes meshery-design-fixture.json ✅
hierarchical parent alias Container Deployment kubernetes Understanding Relationships ✅
hierarchical parent alias Container Pod kubernetes container-hierarchical-parent-alias-relationship ✅
hierarchical parent inventory * Namespace kubernetes hierarchical-parent-namespace-relationship ✅
hierarchical parent inventory * Namespace kubernetes service-to-deployment-network ✅
hierarchical parent inventory * Namespace kubernetes pv-pvc-edge-non-binding-reference-relationship ✅
hierarchical parent inventory * Namespace kubernetes Understanding Relationships ✅
hierarchical sibling matchlabels ClusterRole ClusterRole kubernetes meshery-design-fixture.json ✅
hierarchical sibling matchlabels Deployment Deployment kubernetes meshery-design-fixture.json ✅
hierarchical sibling matchlabels Service Service kubernetes meshery-design-fixture.json ✅

@chaitanyamedidar
chaitanyamedidar self-requested a review July 21, 2026 07:44
@rishiraj38
rishiraj38 merged commit c27d6d0 into meshery:master Jul 21, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/ui User Interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UI] Refactor component authorizations to Sistent permissionKey and useHasPermission

6 participants