mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-10-30 02:02:43 +00:00
* KMSE: Key Model / Adapter / Serializer setup (#13638) * First pass model * KMS key adapter (create/update), serializer, model * Add last rotated and provider to key * KeyEdit secret-edit component, and more key model stuff * add formatDate param support to infotablerow * Add keymgmt key to routes and options-for-backend * Rename keymgmt-key to keymgmt/key * Add test, cleanup * Add mirage handler for kms * Address PR comments * KMS Providers (#13797) * adds pagination-controls component * adds kms provider model, adapter and serializer * adds kms provider-edit component * updates secrets routes to handle itemType query param for kms * updates kms key adapter to query by provider * adds tests for provider-edit component * refactors kms provider adapter to account for dynamic path * adds model-validations-helper util * removes keymgmt from supported-secret-backends * fixes issue generating url for fetching keys for a provider * updates modelType method on secret-edit route to accept options object as arg rather than transition * adds additional checks to ensure queryParams are defined in options object for modelType method * UI/keymgmt distribute key (#13840) * Add distribution details on key page, and empty states if no permissions * Allow search-select component to return object so parent can tell when new item was created * Add stringarray transform * Distribute component first pass * Refactor distribute component for use with internal object rather than ember-data model * Specific permission denied errors on key edit * Allow inline errors on search-select component * Style updates for form errors * Styling and error messages on distribute component * Allow block template on inline alert so we can add doc links * Add distribute action, flash messages, cleanup * Cleanup & Add tests * More cleanup * Address PR comments * Move disable operations logic to commponent class * KMSE Enable/Config (#14835) * adds keymgmt secrets engine as supported backend * adds comment to check on keymgmt as member of adp module * updates kms provider to use model-validations decorator * fixes lint errors and tests Co-authored-by: Chelsea Shaw <82459713+hashishaw@users.noreply.github.com>
97 lines
2.0 KiB
JavaScript
97 lines
2.0 KiB
JavaScript
import Model, { attr } from '@ember-data/model';
|
|
import { expandAttributeMeta } from 'vault/utils/field-to-attrs';
|
|
|
|
export const KEY_TYPES = [
|
|
'aes256-gcm96',
|
|
'rsa-2048',
|
|
'rsa-3072',
|
|
'rsa-4096',
|
|
'ecdsa-p256',
|
|
'ecdsa-p384',
|
|
'ecdsa-p521',
|
|
];
|
|
export default class KeymgmtKeyModel extends Model {
|
|
@attr('string') name;
|
|
@attr('string') backend;
|
|
|
|
@attr('string', {
|
|
possibleValues: KEY_TYPES,
|
|
})
|
|
type;
|
|
|
|
@attr('boolean', {
|
|
defaultValue: false,
|
|
})
|
|
deletionAllowed;
|
|
|
|
@attr('number', {
|
|
label: 'Current version',
|
|
})
|
|
latestVersion;
|
|
|
|
@attr('number', {
|
|
defaultValue: 0,
|
|
defaultShown: 'All versions enabled',
|
|
})
|
|
minEnabledVersion;
|
|
|
|
@attr('array')
|
|
versions;
|
|
|
|
// The following are calculated in serializer
|
|
@attr('date')
|
|
created;
|
|
|
|
@attr('date', {
|
|
defaultShown: 'Not yet rotated',
|
|
})
|
|
lastRotated;
|
|
|
|
// The following are from endpoints other than the main read one
|
|
@attr() provider; // string, or object with permissions error
|
|
@attr() distribution;
|
|
|
|
icon = 'key';
|
|
|
|
get hasVersions() {
|
|
return this.versions.length > 1;
|
|
}
|
|
|
|
get createFields() {
|
|
const createFields = ['name', 'type', 'deletionAllowed'];
|
|
return expandAttributeMeta(this, createFields);
|
|
}
|
|
|
|
get updateFields() {
|
|
return expandAttributeMeta(this, ['minEnabledVersion', 'deletionAllowed']);
|
|
}
|
|
get showFields() {
|
|
return expandAttributeMeta(this, [
|
|
'name',
|
|
'created',
|
|
'type',
|
|
'deletionAllowed',
|
|
'latestVersion',
|
|
'minEnabledVersion',
|
|
'lastRotated',
|
|
]);
|
|
}
|
|
|
|
get keyTypeOptions() {
|
|
return expandAttributeMeta(this, ['type'])[0];
|
|
}
|
|
|
|
get distFields() {
|
|
return [
|
|
{
|
|
name: 'name',
|
|
type: 'string',
|
|
label: 'Distributed name',
|
|
subText: 'The name given to the key by the provider.',
|
|
},
|
|
{ name: 'purpose', type: 'string', label: 'Key Purpose' },
|
|
{ name: 'protection', type: 'string', subText: 'Where cryptographic operations are performed.' },
|
|
];
|
|
}
|
|
}
|