diff --git a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component.html
index 51d0ea681..f5eb8fb35 100644
--- a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component.html
+++ b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component.html
@@ -5,29 +5,18 @@
>
-
-
-
-
- {{ translations.options[option].title | translate }}
-
-
- {{ translations.options[option].description | translate }}
-
-
-
+
{{ 'digital-signature-dialog.upload-warning-message' | translate }}
-
+
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component.ts
index 3a4759ee2..b81cb2779 100644
--- a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component.ts
+++ b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component.ts
@@ -1,12 +1,13 @@
import { ChangeDetectorRef, Component, Injector, ViewChild } from '@angular/core';
import { digitalSignatureDialogTranslations } from '../../translations/digital-signature-dialog-translations';
-import { BaseDialogComponent, LoadingService, Toaster } from '@iqser/common-ui';
+import { BaseDialogComponent, DetailsRadioOption, LoadingService, Toaster } from '@iqser/common-ui';
import { MatDialogRef } from '@angular/material/dialog';
import { PkcsSignatureConfigurationComponent } from './form/pkcs-signature-configuration/pkcs-signature-configuration.component';
import { KmsSignatureConfigurationComponent } from './form/kms-signature-configuration/kms-signature-configuration.component';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { HttpStatusCode } from '@angular/common/http';
-import { CertificateType } from './form/base-signature-configuration-component';
+import { DigitalSignatureOption, DigitalSignatureOptions } from '@red/domain';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
const DEFAULT_DIALOG_WIDTH = '662px';
const KMS_SIGNATURE_DIALOG_WIDTH = '810px';
@@ -19,26 +20,41 @@ export class ConfigureCertificateDialogComponent extends BaseDialogComponent {
@ViewChild(PkcsSignatureConfigurationComponent) pkcsSignatureConfigurationComponent: PkcsSignatureConfigurationComponent;
@ViewChild(KmsSignatureConfigurationComponent) kmsSignatureConfigurationComponent: KmsSignatureConfigurationComponent;
- readonly certificateType = CertificateType;
- readonly certificateOptions = Object.values(CertificateType);
+ readonly digitalSignatureOptions = DigitalSignatureOptions;
readonly translations = digitalSignatureDialogTranslations;
+ readonly options: DetailsRadioOption[] = [
+ {
+ label: _('digital-signature-dialog.options.pkcs.label'),
+ value: DigitalSignatureOptions.PKCS,
+ description: _('digital-signature-dialog.options.pkcs.description'),
+ },
+ {
+ label: _('digital-signature-dialog.options.kms.label'),
+ value: DigitalSignatureOptions.KMS,
+ description: _('digital-signature-dialog.options.kms.description'),
+ },
+ ];
- selectedOption = this.certificateOptions[0];
isInConfiguration = false;
constructor(
protected readonly _injector: Injector,
protected readonly _dialogRef: MatDialogRef,
+ private readonly _formBuilder: FormBuilder,
private readonly _loadingService: LoadingService,
private readonly _toaster: Toaster,
private readonly _changeDetectorRef: ChangeDetectorRef,
) {
super(_injector, _dialogRef);
+
+ this.form = this._formBuilder.group({
+ option: [this.options[0]],
+ });
}
toggleIsInConfiguration() {
this.isInConfiguration = !this.isInConfiguration;
- if (this.isInConfiguration && this.selectedOption === CertificateType.KMS) {
+ if (this.isInConfiguration && this.selectedOption === DigitalSignatureOptions.KMS) {
this._dialogRef.updateSize(KMS_SIGNATURE_DIALOG_WIDTH);
} else {
this._dialogRef.updateSize(DEFAULT_DIALOG_WIDTH);
@@ -51,11 +67,15 @@ export class ConfigureCertificateDialogComponent extends BaseDialogComponent {
}
get activeComponent() {
- return this.selectedOption === CertificateType.PKCS
+ return this.selectedOption === DigitalSignatureOptions.PKCS
? this.pkcsSignatureConfigurationComponent
: this.kmsSignatureConfigurationComponent;
}
+ get selectedOption(): DigitalSignatureOption {
+ return this.form.get('option').value.value;
+ }
+
async save(): Promise {
try {
await this.activeComponent.save();
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component.ts b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component.ts
index c5830471c..d25bca73c 100644
--- a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component.ts
+++ b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component.ts
@@ -1,19 +1,14 @@
import { BaseFormComponent } from '@iqser/common-ui';
import { DigitalSignatureService } from '../../../services/digital-signature.service';
-import { IDigitalSignatureRequest } from '@red/domain';
-import { firstValueFrom } from 'rxjs';
-
-export enum CertificateType {
- PKCS = 'pkcs',
- KMS = 'kms',
-}
+import { IDigitalSignatureRequest, DigitalSignatureOption, DigitalSignatureOptions } from '@red/domain';
+import { firstValueFrom, Observable } from 'rxjs';
export abstract class BaseSignatureConfigurationComponent extends BaseFormComponent {
file: File | null;
protected constructor(
protected readonly _digitalSignatureService: DigitalSignatureService,
- private readonly _certificateType: CertificateType,
+ private readonly _selectedOption: DigitalSignatureOption,
) {
super();
}
@@ -42,8 +37,8 @@ export abstract class BaseSignatureConfigurationComponent extends BaseFormCompon
}
deleteSignature(): Promise {
- const observable =
- this._certificateType === CertificateType.PKCS
+ const observable: Observable =
+ this._selectedOption === DigitalSignatureOptions.PKCS
? this._digitalSignatureService.deleteSignature()
: this._digitalSignatureService.deleteKmsSignature();
return firstValueFrom(observable);
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component.ts
index e992045b5..0f1810b23 100644
--- a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component.ts
+++ b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component.ts
@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
-import { BaseSignatureConfigurationComponent, CertificateType } from '../base-signature-configuration-component';
-import { IKmsDigitalSignature, IKmsDigitalSignatureRequest } from '@red/domain';
+import { BaseSignatureConfigurationComponent } from '../base-signature-configuration-component';
+import { IKmsDigitalSignature, IKmsDigitalSignatureRequest, DigitalSignatureOptions } from '@red/domain';
import { firstValueFrom } from 'rxjs';
import { DigitalSignatureService } from '../../../../services/digital-signature.service';
@@ -15,7 +15,7 @@ export class KmsSignatureConfigurationComponent extends BaseSignatureConfigurati
@Input() digitalSignature!: IKmsDigitalSignatureRequest;
constructor(protected readonly _digitalSignatureService: DigitalSignatureService, private readonly _formBuilder: FormBuilder) {
- super(_digitalSignatureService, CertificateType.KMS);
+ super(_digitalSignatureService, DigitalSignatureOptions.KMS);
}
ngOnInit() {
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.ts
index 5b0025faf..ed5afee29 100644
--- a/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.ts
+++ b/apps/red-ui/src/app/modules/admin/dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component.ts
@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
import { FormBuilder, Validators } from '@angular/forms';
-import { BaseSignatureConfigurationComponent, CertificateType } from '../base-signature-configuration-component';
-import { IPkcsDigitalSignature, IPkcsDigitalSignatureRequest } from '@red/domain';
+import { BaseSignatureConfigurationComponent } from '../base-signature-configuration-component';
+import { IPkcsDigitalSignature, IPkcsDigitalSignatureRequest, DigitalSignatureOptions } from '@red/domain';
import { firstValueFrom } from 'rxjs';
import { DigitalSignatureService } from '../../../../services/digital-signature.service';
import { lastIndexOfEnd } from '../../../../../../utils';
@@ -16,7 +16,7 @@ export class PkcsSignatureConfigurationComponent extends BaseSignatureConfigurat
@Input() digitalSignature!: IPkcsDigitalSignatureRequest;
constructor(protected readonly _digitalSignatureService: DigitalSignatureService, private readonly _formBuilder: FormBuilder) {
- super(_digitalSignatureService, CertificateType.PKCS);
+ super(_digitalSignatureService, DigitalSignatureOptions.PKCS);
}
ngOnInit() {
diff --git a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.ts
index 476904c47..c1edad42e 100644
--- a/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.ts
+++ b/apps/red-ui/src/app/modules/admin/screens/digital-signature/digital-signature-screen.component.ts
@@ -8,8 +8,7 @@ import { firstValueFrom } from 'rxjs';
import { AdminDialogService } from '../../services/admin-dialog.service';
import { PkcsSignatureConfigurationComponent } from '../../dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component';
import { KmsSignatureConfigurationComponent } from '../../dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component';
-import { IKmsDigitalSignatureRequest, IPkcsDigitalSignatureRequest } from '@red/domain';
-import { CertificateType } from '../../dialogs/configure-digital-signature-dialog/form/base-signature-configuration-component';
+import { DigitalSignatureOptions, IKmsDigitalSignatureRequest, IPkcsDigitalSignatureRequest } from '@red/domain';
@Component({
selector: 'redaction-digital-signature-screen',
@@ -20,7 +19,7 @@ export class DigitalSignatureScreenComponent implements OnInit {
@ViewChild(PkcsSignatureConfigurationComponent) pkcsSignatureConfigurationComponent: PkcsSignatureConfigurationComponent;
@ViewChild(KmsSignatureConfigurationComponent) kmsSignatureConfigurationComponent: KmsSignatureConfigurationComponent;
- readonly certificateType = CertificateType;
+ readonly certificateType = DigitalSignatureOptions;
readonly iconButtonTypes = IconButtonTypes;
readonly currentUser = this._userService.currentUser;
@@ -53,7 +52,8 @@ export class DigitalSignatureScreenComponent implements OnInit {
}
get disabled(): boolean {
- return this.activeComponent?.disabled;
+ //TODO remove second check when the update endpoint will be available for KMS signature
+ return this.activeComponent?.disabled || this.currentCertificateType === DigitalSignatureOptions.KMS;
}
async saveDigitalSignature(): Promise {
@@ -70,11 +70,11 @@ export class DigitalSignatureScreenComponent implements OnInit {
if (!this.digitalSignature) {
return;
}
- return 'contactInfo' in this.digitalSignature ? CertificateType.PKCS : CertificateType.KMS;
+ return 'contactInfo' in this.digitalSignature ? DigitalSignatureOptions.PKCS : DigitalSignatureOptions.KMS;
}
get activeComponent() {
- return this.currentCertificateType === CertificateType.PKCS
+ return this.currentCertificateType === DigitalSignatureOptions.PKCS
? this.pkcsSignatureConfigurationComponent
: this.kmsSignatureConfigurationComponent;
}
diff --git a/apps/red-ui/src/app/modules/admin/translations/digital-signature-dialog-translations.ts b/apps/red-ui/src/app/modules/admin/translations/digital-signature-dialog-translations.ts
index c4776bd53..b4b99925c 100644
--- a/apps/red-ui/src/app/modules/admin/translations/digital-signature-dialog-translations.ts
+++ b/apps/red-ui/src/app/modules/admin/translations/digital-signature-dialog-translations.ts
@@ -6,14 +6,4 @@ export const digitalSignatureDialogTranslations = {
pkcs: _('digital-signature-dialog.title.pkcs'),
kms: _('digital-signature-dialog.title.kms'),
},
- options: {
- pkcs: {
- title: _('digital-signature-dialog.options.pkcs.title'),
- description: _('digital-signature-dialog.options.pkcs.description'),
- },
- kms: {
- title: _('digital-signature-dialog.options.kms.title'),
- description: _('digital-signature-dialog.options.kms.description'),
- },
- },
} as const;
diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json
index 1a018f956..973f53c6d 100644
--- a/apps/red-ui/src/assets/i18n/de.json
+++ b/apps/red-ui/src/assets/i18n/de.json
@@ -679,11 +679,11 @@
"options": {
"kms": {
"description": "",
- "title": ""
+ "label": ""
},
"pkcs": {
"description": "",
- "title": ""
+ "label": ""
}
},
"title": {
diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json
index 6cceeb79e..38839e57d 100644
--- a/apps/red-ui/src/assets/i18n/en.json
+++ b/apps/red-ui/src/assets/i18n/en.json
@@ -679,11 +679,11 @@
"options": {
"kms": {
"description": "Provide a corresponding PEM file containing the certificate, along with Amazon KMS credentials needed for securing the private key.",
- "title": "I use an Amazon KMS private key"
+ "label": "I use an Amazon KMS private key"
},
"pkcs": {
"description": "A PKCS#12 file is a file that bundles the private key and the X.509 certificate. The password protection is required to secure the private key. Unprotected PKCS#12 files are not supported.",
- "title": "I want to upload a PKCS#12 file"
+ "label": "I want to upload a PKCS#12 file"
}
},
"title": {
diff --git a/libs/red-domain/src/index.ts b/libs/red-domain/src/index.ts
index 31a7e92e8..92d56faad 100644
--- a/libs/red-domain/src/index.ts
+++ b/libs/red-domain/src/index.ts
@@ -25,3 +25,4 @@ export * from './lib/trash';
export * from './lib/text-highlight';
export * from './lib/permissions';
export * from './lib/license';
+export * from './lib/digital-signature';
diff --git a/libs/red-domain/src/lib/digital-signature/digital-signature-options.ts b/libs/red-domain/src/lib/digital-signature/digital-signature-options.ts
new file mode 100644
index 000000000..c012fec01
--- /dev/null
+++ b/libs/red-domain/src/lib/digital-signature/digital-signature-options.ts
@@ -0,0 +1,6 @@
+export const DigitalSignatureOptions = {
+ KMS: 'KMS',
+ PKCS: 'PKCS',
+} as const;
+
+export type DigitalSignatureOption = keyof typeof DigitalSignatureOptions;
diff --git a/libs/red-domain/src/lib/digital-signature/index.ts b/libs/red-domain/src/lib/digital-signature/index.ts
new file mode 100644
index 000000000..2502c7af8
--- /dev/null
+++ b/libs/red-domain/src/lib/digital-signature/index.ts
@@ -0,0 +1 @@
+export * from './digital-signature-options';