mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-20 06:01:10 +02:00
* add rotate root route * add page component * add modal * fix modal image styling * add radio buttons * add jsonToCert function to pki parser * add verify function * add verify to details route * nest rotate-root under issuer/ * copy values from old root ca * pull detail info rows into a separate component * add type declaration files * add parsing error warning to rotate root component file * add comments * add capabilities to controller * update icon * revert issuer details * refactor pki info table rows * add parsedparameters to pki helper * add alert banner * update attrs, fix info rows * add endpoint to action router * update alert banner * hide toolbar from generate root display * add download buttons to toolbar * add banner getter * fix typo in issuer details * fix assertion * move alert banner after generating root to parent * rename issuer index route file * refactor routing so model can be passed from route * add confirmLeave and done button to use existin settings done form * rename serial number to differentiate between two types * fix links, update ids to issuerId not response id * update ts declaration * change variable names add comments * update existing tests * fix comment typo * add download button test * update serializer to change subject_serial_number to serial_number for backend * remove pageTitle getter * remove old arg * round 1 of testing complete.. * finish endpoint tests * finish component tests * move toolbars to parent route * add acceptance test for rotate route * add const to hold radio button string values * remove action, fix link
91 lines
2.5 KiB
JavaScript
91 lines
2.5 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import { underscore } from '@ember/string';
|
|
import { keyParamsByType } from 'pki/utils/action-params';
|
|
import ApplicationSerializer from '../application';
|
|
|
|
export default class PkiActionSerializer extends ApplicationSerializer {
|
|
attrs = {
|
|
customTtl: { serialize: false },
|
|
type: { serialize: false },
|
|
subjectSerialNumber: { serialize: false },
|
|
};
|
|
|
|
serialize(snapshot, requestType) {
|
|
const data = super.serialize(snapshot);
|
|
// requestType is a custom value specified from the pki/action adapter
|
|
const allowedPayloadAttributes = this._allowedParamsByType(requestType, snapshot.record.type);
|
|
if (!allowedPayloadAttributes) return data;
|
|
// the backend expects the subject's serial number param to be 'serial_number'
|
|
// we label it as subject_serial_number to differentiate from the vault generated UUID
|
|
data.serial_number = data.subject_serial_number;
|
|
|
|
const payload = {};
|
|
allowedPayloadAttributes.forEach((key) => {
|
|
if ('undefined' !== typeof data[key]) {
|
|
payload[key] = data[key];
|
|
}
|
|
});
|
|
return payload;
|
|
}
|
|
|
|
_allowedParamsByType(actionType, type) {
|
|
const keyFields = keyParamsByType(type).map((attrName) => underscore(attrName).toLowerCase());
|
|
const commonProps = [
|
|
'alt_names',
|
|
'common_name',
|
|
'country',
|
|
'exclude_cn_from_sans',
|
|
'format',
|
|
'ip_sans',
|
|
'locality',
|
|
'organization',
|
|
'other_sans',
|
|
'ou',
|
|
'postal_code',
|
|
'province',
|
|
'serial_number',
|
|
'street_address',
|
|
'type',
|
|
'uri_sans',
|
|
...keyFields,
|
|
];
|
|
switch (actionType) {
|
|
case 'import':
|
|
return ['pem_bundle'];
|
|
case 'generate-root':
|
|
return [
|
|
...commonProps,
|
|
'issuer_name',
|
|
'max_path_length',
|
|
'not_after',
|
|
'not_before_duration',
|
|
'permitted_dns_domains',
|
|
'private_key_format',
|
|
'ttl',
|
|
];
|
|
case 'rotate-root':
|
|
return [
|
|
...commonProps,
|
|
'issuer_name',
|
|
'max_path_length',
|
|
'not_after',
|
|
'not_before_duration',
|
|
'permitted_dns_domains',
|
|
'private_key_format',
|
|
'ttl',
|
|
];
|
|
case 'generate-csr':
|
|
return [...commonProps, 'add_basic_constraints'];
|
|
case 'sign-intermediate':
|
|
return ['common_name', 'issuer_name', 'csr'];
|
|
default:
|
|
// if type doesn't match, serialize all
|
|
return null;
|
|
}
|
|
}
|
|
}
|