| /** |
| * Copyright (c) HashiCorp, Inc. |
| * SPDX-License-Identifier: MPL-2.0 |
| */ |
| |
| import Model, { attr } from '@ember-data/model'; |
| import { withFormFields } from 'vault/decorators/model-form-fields'; |
| import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities'; |
| |
| const formFieldGroups = [ |
| { |
| 'Certificate Revocation List (CRL)': ['expiry', 'autoRebuildGracePeriod', 'deltaRebuildInterval'], |
| }, |
| { |
| 'Online Certificate Status Protocol (OCSP)': ['ocspExpiry'], |
| }, |
| { 'Unified Revocation': ['crossClusterRevocation', 'unifiedCrl', 'unifiedCrlOnExistingPaths'] }, |
| ]; |
| @withFormFields(null, formFieldGroups) |
| export default class PkiConfigCrlModel extends Model { |
| // This model uses the backend value as the model ID |
| |
| @attr('boolean') autoRebuild; |
| @attr('string', { |
| label: 'Auto-rebuild on', |
| labelDisabled: 'Auto-rebuild off', |
| mapToBoolean: 'autoRebuild', |
| isOppositeValue: false, |
| editType: 'ttl', |
| helperTextEnabled: 'Vault will rebuild the CRL in the below grace period before expiration', |
| helperTextDisabled: 'Vault will not automatically rebuild the CRL', |
| }) |
| autoRebuildGracePeriod; |
| |
| @attr('boolean') enableDelta; |
| @attr('string', { |
| label: 'Delta CRL building on', |
| labelDisabled: 'Delta CRL building off', |
| mapToBoolean: 'enableDelta', |
| isOppositeValue: false, |
| editType: 'ttl', |
| helperTextEnabled: 'Vault will rebuild the delta CRL at the interval below:', |
| helperTextDisabled: 'Vault will not rebuild the delta CRL at an interval', |
| }) |
| deltaRebuildInterval; |
| |
| @attr('boolean') disable; |
| @attr('string', { |
| label: 'Expiry', |
| labelDisabled: 'No expiry', |
| mapToBoolean: 'disable', |
| isOppositeValue: true, |
| editType: 'ttl', |
| helperTextDisabled: 'The CRL will not be built.', |
| helperTextEnabled: 'The CRL will expire after:', |
| }) |
| expiry; |
| |
| @attr('boolean') ocspDisable; |
| @attr('string', { |
| label: 'OCSP responder APIs enabled', |
| labelDisabled: 'OCSP responder APIs disabled', |
| mapToBoolean: 'ocspDisable', |
| isOppositeValue: true, |
| editType: 'ttl', |
| helperTextEnabled: "Requests about a certificate's status will be valid for:", |
| helperTextDisabled: 'Requests cannot be made to check if an individual certificate is valid.', |
| }) |
| ocspExpiry; |
| |
| // enterprise only params |
| @attr('boolean', { |
| label: 'Cross-cluster revocation', |
| helpText: |
| 'Enables cross-cluster revocation request queues. When a serial not issued on this local cluster is passed to the /revoke endpoint, it is replicated across clusters and revoked by the issuing cluster if it is online.', |
| }) |
| crossClusterRevocation; |
| |
| @attr('boolean', { |
| label: 'Unified CRL', |
| helpText: |
| 'Enables unified CRL and OCSP building. This synchronizes all revocations between clusters; a single, unified CRL will be built on the active node of the primary performance replication (PR) cluster.', |
| }) |
| unifiedCrl; |
| |
| @attr('boolean', { |
| label: 'Unified CRL on existing paths', |
| helpText: |
| 'If enabled, existing CRL and OCSP paths will return the unified CRL instead of a response based on cluster-local data.', |
| }) |
| unifiedCrlOnExistingPaths; |
| |
| @lazyCapabilities(apiPath`${'id'}/config/crl`, 'id') crlPath; |
| |
| get canSet() { |
| return this.crlPath.get('canUpdate') !== false; |
| } |
| } |