Files
vault/ui/lib/pki/addon/routes/keys/index.js
2023-09-21 23:32:01 +00:00

61 lines
1.5 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { withConfig } from 'pki/decorators/check-issuers';
import { hash } from 'rsvp';
import { PKI_DEFAULT_EMPTY_STATE_MSG } from 'pki/routes/overview';
@withConfig()
export default class PkiKeysIndexRoute extends Route {
@service secretMountPath;
@service store;
queryParams = {
page: {
refreshModel: true,
},
};
model(params) {
const page = Number(params.page) || 1;
return hash({
hasConfig: this.shouldPromptConfig,
parentModel: this.modelFor('keys'),
keyModels: this.store
.lazyPaginatedQuery('pki/key', {
backend: this.secretMountPath.currentPath,
responsePath: 'data.keys',
page,
skipCache: page === 1,
})
.catch((err) => {
if (err.httpStatus === 404) {
return [];
} else {
throw err;
}
}),
});
}
setupController(controller, resolvedModel) {
super.setupController(controller, resolvedModel);
controller.breadcrumbs = [
{ label: 'secrets', route: 'secrets', linkExternal: true },
{ label: this.secretMountPath.currentPath, route: 'overview' },
{ label: 'keys', route: 'keys.index' },
];
controller.notConfiguredMessage = PKI_DEFAULT_EMPTY_STATE_MSG;
}
resetController(controller, isExiting) {
if (isExiting) {
controller.set('page', undefined);
}
}
}