open-vault/ui/app/serializers/pki/issuer.js
claire bontempo f4eed5cb31
UI: pki cross-sign issuers (#18695)
* make cross-sign component

* remove type from obj-list-input

* finish skeleton of component

* handle change on init

* finish cross-sign form

* add cancel transition

* update pki/issuer adapter to accept backend passed from adapterOptions

* first draft of cross-signing issuers component

* refactor to accommodate listing signed certs

* changes to config adapter and model, likely will need to revert and manually add to pki/action

* add args to infotooltip, move header to cross-sign route

* use pki/action model

* move header to route file

* finish displaying signed certificates

* finish styling

* add issuer id to cross-sign breadcrumbs

* add parsed cert data to requests

* add status count

* add error banner back
2023-01-25 19:37:20 +00:00

53 lines
1.6 KiB
JavaScript

import { parseCertificate } from 'vault/utils/parse-pki-cert';
import ApplicationSerializer from '../application';
export default class PkiIssuerSerializer extends ApplicationSerializer {
primaryKey = 'issuer_id';
constructor() {
super(...arguments);
// remove following attrs from serialization
const attrs = [
'caChain',
'certificate',
'commonName',
'issuerId',
'keyId',
'notValidAfter',
'notValidBefore',
'serialNumber',
'signatureBits',
];
this.attrs = attrs.reduce((attrObj, attr) => {
attrObj[attr] = { serialize: false };
return attrObj;
}, {});
}
normalizeResponse(store, primaryModelClass, payload, id, requestType) {
if (payload.data.certificate) {
// Parse certificate back from the API and add to payload
const parsedCert = parseCertificate(payload.data.certificate);
const data = { issuer_ref: payload.issuer_id, ...payload.data, ...parsedCert };
const json = super.normalizeResponse(store, primaryModelClass, { ...payload, data }, id, requestType);
return json;
}
return super.normalizeResponse(...arguments);
}
// rehydrate each issuers model so all model attributes are accessible from the LIST response
normalizeItems(payload) {
if (payload.data) {
if (payload.data?.keys && Array.isArray(payload.data.keys)) {
return payload.data.keys.map((issuer_id) => ({
issuer_id,
...payload.data.key_info[issuer_id],
}));
}
Object.assign(payload, payload.data);
delete payload.data;
}
return payload;
}
}