Skip to content

Commit ac33e66

Browse files
[9.1] refactor(api keys): Display personal API keys as default view (#245261) (#245451)
# Backport This will backport the following commits from `main` to `9.1`: - [refactor(api keys): Display personal API keys as default view (#245261)](#245261) <!--- Backport version: 9.6.6 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Sid","email":"siddharthmantri1@gmail.com"},"sourceCommit":{"committedDate":"2025-12-05T22:00:13Z","message":"refactor(api keys): Display personal API keys as default view (#245261)\n\nCloses https://github.com/elastic/kibana/issues/245255\n\n## Summary\n\nChanges the default display view of the API Keys page to show Personal\nkeys only.\n\n### Release note\nAPI Keys management page now defaults to showing personal API Keys only\n\n\n### How to test\n- Start ES and Kibana\n- Navigate to Stack Management -> API Keys\n- Create a few different types of Keys: Personal, Cross Cluster \n- Create a Managed key by setting the metadata to \n```\n{\n \"managed\": true\n}\n```\n- Now when reloading the page, the default view should only show the\nPersonal keys and the Personal filter tab should be selected.\n\n\n### Screenshots\n\n- On Main\n<img width=\"1716\" height=\"1284\" alt=\"Screenshot 2025-12-04 at 15 49 35\"\nsrc=\"https://github.com/user-attachments/assets/c693eab0-3e5a-4292-9895-9cb86b008dda\"\n/>\n\n- On this PR\n<img width=\"1718\" height=\"1287\" alt=\"Screenshot 2025-12-04 at 15 50 06\"\nsrc=\"https://github.com/user-attachments/assets/e0606424-fda8-42e4-b735-6fb7cfa5be8e\"\n/>\n\n\nIf no personal keys are present, but managed/cross cluster are then the\nview defaults to showing no keys and the filter still enabled\n\n<img width=\"1471\" height=\"584\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/cdcdba01-0ebe-4309-bb78-b001a6c72b3f\"\n/>\n\n\n### Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers should verify this PR satisfies this list as well.\n\n- [ ] Any text added follows [EUI's writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing), uses\nsentence case text and includes [i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)\n- [ ]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas added for features that require explanation or tutorials\n- [ ] [Unit or functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere updated or added to match the most common scenarios\n- [ ] If a plugin configuration key changed, check if it needs to be\nallowlisted in the cloud and added to the [docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\n- [ ] This was checked for breaking HTTP API changes, and any breaking\nchanges have been approved by the breaking-change committee. The\n`release_note:breaking` label should be applied in these situations.\n- [ ] [Flaky Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was\nused on any tests changed\n- [ ] The PR description includes the appropriate Release Notes section,\nand the correct `release_note:*` label is applied per the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n- [ ] Review the [backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand apply applicable `backport:*` labels.\n\n### Identify risks\n\nDoes this PR introduce any risks? For example, consider risks like hard\nto test bugs, performance regression, potential of data loss.\n\nDescribe the risk, its severity, and mitigation for each identified\nrisk. Invite stakeholders and evaluate how to proceed before merging.\n\n- [ ] [See some risk\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)\n- [ ] ...","sha":"0dd1c86557ebc1b62821cac0f462c963b511b73b","branchLabelMapping":{"^v9.3.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:enhancement","Team:Security","Feature:Users/Roles/API Keys","backport:all-open","v9.3.0"],"title":"refactor(api keys): Display personal API keys as default view","number":245261,"url":"https://github.com/elastic/kibana/pull/245261","mergeCommit":{"message":"refactor(api keys): Display personal API keys as default view (#245261)\n\nCloses https://github.com/elastic/kibana/issues/245255\n\n## Summary\n\nChanges the default display view of the API Keys page to show Personal\nkeys only.\n\n### Release note\nAPI Keys management page now defaults to showing personal API Keys only\n\n\n### How to test\n- Start ES and Kibana\n- Navigate to Stack Management -> API Keys\n- Create a few different types of Keys: Personal, Cross Cluster \n- Create a Managed key by setting the metadata to \n```\n{\n \"managed\": true\n}\n```\n- Now when reloading the page, the default view should only show the\nPersonal keys and the Personal filter tab should be selected.\n\n\n### Screenshots\n\n- On Main\n<img width=\"1716\" height=\"1284\" alt=\"Screenshot 2025-12-04 at 15 49 35\"\nsrc=\"https://github.com/user-attachments/assets/c693eab0-3e5a-4292-9895-9cb86b008dda\"\n/>\n\n- On this PR\n<img width=\"1718\" height=\"1287\" alt=\"Screenshot 2025-12-04 at 15 50 06\"\nsrc=\"https://github.com/user-attachments/assets/e0606424-fda8-42e4-b735-6fb7cfa5be8e\"\n/>\n\n\nIf no personal keys are present, but managed/cross cluster are then the\nview defaults to showing no keys and the filter still enabled\n\n<img width=\"1471\" height=\"584\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/cdcdba01-0ebe-4309-bb78-b001a6c72b3f\"\n/>\n\n\n### Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers should verify this PR satisfies this list as well.\n\n- [ ] Any text added follows [EUI's writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing), uses\nsentence case text and includes [i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)\n- [ ]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas added for features that require explanation or tutorials\n- [ ] [Unit or functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere updated or added to match the most common scenarios\n- [ ] If a plugin configuration key changed, check if it needs to be\nallowlisted in the cloud and added to the [docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\n- [ ] This was checked for breaking HTTP API changes, and any breaking\nchanges have been approved by the breaking-change committee. The\n`release_note:breaking` label should be applied in these situations.\n- [ ] [Flaky Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was\nused on any tests changed\n- [ ] The PR description includes the appropriate Release Notes section,\nand the correct `release_note:*` label is applied per the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n- [ ] Review the [backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand apply applicable `backport:*` labels.\n\n### Identify risks\n\nDoes this PR introduce any risks? For example, consider risks like hard\nto test bugs, performance regression, potential of data loss.\n\nDescribe the risk, its severity, and mitigation for each identified\nrisk. Invite stakeholders and evaluate how to proceed before merging.\n\n- [ ] [See some risk\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)\n- [ ] ...","sha":"0dd1c86557ebc1b62821cac0f462c963b511b73b"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.3.0","branchLabelMappingKey":"^v9.3.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/245261","number":245261,"mergeCommit":{"message":"refactor(api keys): Display personal API keys as default view (#245261)\n\nCloses https://github.com/elastic/kibana/issues/245255\n\n## Summary\n\nChanges the default display view of the API Keys page to show Personal\nkeys only.\n\n### Release note\nAPI Keys management page now defaults to showing personal API Keys only\n\n\n### How to test\n- Start ES and Kibana\n- Navigate to Stack Management -> API Keys\n- Create a few different types of Keys: Personal, Cross Cluster \n- Create a Managed key by setting the metadata to \n```\n{\n \"managed\": true\n}\n```\n- Now when reloading the page, the default view should only show the\nPersonal keys and the Personal filter tab should be selected.\n\n\n### Screenshots\n\n- On Main\n<img width=\"1716\" height=\"1284\" alt=\"Screenshot 2025-12-04 at 15 49 35\"\nsrc=\"https://github.com/user-attachments/assets/c693eab0-3e5a-4292-9895-9cb86b008dda\"\n/>\n\n- On this PR\n<img width=\"1718\" height=\"1287\" alt=\"Screenshot 2025-12-04 at 15 50 06\"\nsrc=\"https://github.com/user-attachments/assets/e0606424-fda8-42e4-b735-6fb7cfa5be8e\"\n/>\n\n\nIf no personal keys are present, but managed/cross cluster are then the\nview defaults to showing no keys and the filter still enabled\n\n<img width=\"1471\" height=\"584\" alt=\"image\"\nsrc=\"https://github.com/user-attachments/assets/cdcdba01-0ebe-4309-bb78-b001a6c72b3f\"\n/>\n\n\n### Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers should verify this PR satisfies this list as well.\n\n- [ ] Any text added follows [EUI's writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing), uses\nsentence case text and includes [i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)\n- [ ]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas added for features that require explanation or tutorials\n- [ ] [Unit or functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere updated or added to match the most common scenarios\n- [ ] If a plugin configuration key changed, check if it needs to be\nallowlisted in the cloud and added to the [docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)\n- [ ] This was checked for breaking HTTP API changes, and any breaking\nchanges have been approved by the breaking-change committee. The\n`release_note:breaking` label should be applied in these situations.\n- [ ] [Flaky Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was\nused on any tests changed\n- [ ] The PR description includes the appropriate Release Notes section,\nand the correct `release_note:*` label is applied per the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n- [ ] Review the [backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand apply applicable `backport:*` labels.\n\n### Identify risks\n\nDoes this PR introduce any risks? For example, consider risks like hard\nto test bugs, performance regression, potential of data loss.\n\nDescribe the risk, its severity, and mitigation for each identified\nrisk. Invite stakeholders and evaluate how to proceed before merging.\n\n- [ ] [See some risk\nexamples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)\n- [ ] ...","sha":"0dd1c86557ebc1b62821cac0f462c963b511b73b"}}]}] BACKPORT--> Co-authored-by: Sid <siddharthmantri1@gmail.com>
1 parent a0f9517 commit ac33e66

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

x-pack/platform/plugins/shared/security/public/management/api_keys/api_keys_grid/api_keys_grid_page.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ const DEFAULT_TABLE_STATE = {
5353
},
5454
from: 0,
5555
size: 25,
56-
filters: {},
56+
filters: {
57+
type: 'rest' as const,
58+
},
5759
};
5860

5961
const PLUS_SIGN_REGEX = /[+]/g;

x-pack/platform/test/functional/apps/api_keys/home_page.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
506506
});
507507

508508
it('active/expired filter buttons work as expected', async () => {
509+
await pageObjects.apiKeys.clickTypeFilters('personal');
509510
await pageObjects.apiKeys.clickExpiryFilters('active');
510511
await ensureApiKeysExist(['my api key', 'Alerting: Managed', 'test_cross_cluster']);
511512
await ensureApiKeyDoesNotExist('test_api_key');
@@ -536,6 +537,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
536537
});
537538

538539
it('username filter buttons work as expected', async () => {
540+
await pageObjects.apiKeys.clickTypeFilters('personal');
539541
await pageObjects.apiKeys.clickUserNameDropdown();
540542
expect(
541543
await testSubjects.exists('userProfileSelectableOption-system_indices_superuser')
@@ -553,6 +555,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
553555
});
554556

555557
it('search bar works as expected', async () => {
558+
await pageObjects.apiKeys.clickTypeFilters('personal');
556559
await pageObjects.apiKeys.setSearchBarValue('test_user_api_key');
557560

558561
await ensureApiKeysExist(['test_user_api_key']);
@@ -563,6 +566,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
563566
await pageObjects.apiKeys.setSearchBarValue('"api"');
564567
await ensureApiKeysExist(['my api key']);
565568
});
569+
570+
it('loads default view', async () => {
571+
// Default view should be personal API keys
572+
await ensureApiKeysExist(['test_user_api_key', 'test_api_key']);
573+
});
566574
});
567575
});
568576
};

0 commit comments

Comments
 (0)