diff --git a/Changelog.md b/Changelog.md index 2e90524..2beb8c4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,10 @@ # Changelog ## [Unreleased] +### [3.13.0] - 2026-07-24 +### Added +- Added support for configuring the ID document capture mode through widget configuration. + ### [3.12.2] - 2026-07-06 ### Fixed - Fixed a bug where a section was removed from the consent screen. diff --git a/package.json b/package.json index 21b3b9f..dfc0ed9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "entity-developer-dashboard", - "version": "3.12.2", + "version": "3.13.0", "private": true, "scripts": { "serve": "vue-cli-service serve --mode production", diff --git a/src/config.js b/src/config.js index fe0f207..56b0755 100644 --- a/src/config.js +++ b/src/config.js @@ -106,6 +106,11 @@ config['SERVICE_TYPES'] = Object.freeze({ QUEST: 'QUEST', }) +config['DocumentUploadMode'] = Object.freeze({ + MANUAL: 'MANUAL', + SCAN: 'SCAN', +}) + config['GRANT_TYPES_ENUM'] = Object.freeze({ 'SSI_API': 'access_service_ssi', diff --git a/src/views/playground/WidgetConfig/Index.vue b/src/views/playground/WidgetConfig/Index.vue index 3a2abfa..75bf4ff 100644 --- a/src/views/playground/WidgetConfig/Index.vue +++ b/src/views/playground/WidgetConfig/Index.vue @@ -181,11 +181,22 @@ ul {
  • -
    +
    {{ this.widgetConfigUI.idOcr.label }}
    +
    + + +
  • -
  • @@ -396,6 +406,7 @@ import { isAccessDeniedError } from '../../../utils/accessDenied'; // import TrustedIssuer from './components/TrustedIssuer.vue'; import MarketplaceList from '../../../components/MarketplaceList.vue'; import HFBeta from '../../../components/element/HFBeta.vue'; +import config from '../../../config'; export default { name: "WidgetConfig", @@ -518,6 +529,7 @@ export default { if (Object.keys(this.widgetConfig).length > 0) { this.widgetConfigTemp = JSON.parse(JSON.stringify(this.widgetConfig)) } + this.migratedocumentUploadMode() if (typeof this.widgetConfigTemp.isWidgetLogin !== 'boolean') { this.$set(this.widgetConfigTemp, 'isWidgetLogin', true) } @@ -585,6 +597,7 @@ export default { SupportedZkProofTypes: Object.freeze({ PROOF_OF_AGE: 'zkProofOfAge', }), + DocumentUploadMode: config.DocumentUploadMode, widgetConfigUI: { faceRecog: { label: "Enable Facial Recoginition", @@ -637,7 +650,8 @@ export default { faceRecog: true, idOcr: { enabled: false, - documentType: 'passport' + documentType: 'passport', + documentUploadMode: config.DocumentUploadMode.SCAN, }, userConsent: { enabled: true, @@ -804,8 +818,30 @@ export default { criteria: this.ageProofCriteria, }] }, + migratedocumentUploadMode() { + const legacyEnableDocumentUpload = this.widgetConfigTemp.enableDocumentUpload + + if (!this.widgetConfigTemp.idOcr) { + this.$set(this.widgetConfigTemp, 'idOcr', {}) + } + + if (!Object.values(config.DocumentUploadMode).includes(this.widgetConfigTemp.idOcr.documentUploadMode)) { + this.$set( + this.widgetConfigTemp.idOcr, + 'documentUploadMode', + legacyEnableDocumentUpload === true + ? config.DocumentUploadMode.MANUAL + : config.DocumentUploadMode.SCAN, + ) + } + + if (Object.prototype.hasOwnProperty.call(this.widgetConfigTemp, 'enableDocumentUpload')) { + this.$delete(this.widgetConfigTemp, 'enableDocumentUpload') + } + }, validateField() { this.widgetConfigTemp.isWidgetLogin = this.widgetConfigTemp.isWidgetLogin !== false + this.migratedocumentUploadMode() if (!this.widgetConfigTemp.issuerDID) { throw new Error('Issuer DID is required') }