@verii/server-credentialagent 1.0.0-pre.1752076816
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.localdev.e2e.env +40 -0
- package/.localdev.env +41 -0
- package/.standalone.env +5 -0
- package/LICENSE +202 -0
- package/NOTICE +1 -0
- package/README.md +19 -0
- package/docker/compose.yml +33 -0
- package/e2e/README.md +12 -0
- package/e2e/org-registration-and-issuing.e2e.test.js +624 -0
- package/jest.config.js +20 -0
- package/migrate-mongo.config.js +36 -0
- package/migrations/20210317133137-add-index-to-offers-repo.js +57 -0
- package/migrations/20210416145639-add-index-to-revocation-list.js +27 -0
- package/migrations/20210719120225-add_unique_did_index_to_tenant.js +45 -0
- package/migrations/20230524053029-add-vendorUserIdMappings-index.js +32 -0
- package/migrations/20230616111907-add-configuration-type-index.js +32 -0
- package/package.json +108 -0
- package/src/assets/public/favicon.ico +0 -0
- package/src/assets/public/logo192.png +0 -0
- package/src/assets/public/logo512.png +0 -0
- package/src/assets/public/manifest.json +28 -0
- package/src/assets/templates/app-redirect.hbs +16 -0
- package/src/config/config.js +44 -0
- package/src/config/core-config.js +143 -0
- package/src/config/holder-config.js +104 -0
- package/src/config/index.js +22 -0
- package/src/config/operator-config.js +64 -0
- package/src/controllers/autoload-holder-api-controllers.js +30 -0
- package/src/controllers/autoload-operator-api-controllers.js +31 -0
- package/src/controllers/autoload-root-api-controller.js +30 -0
- package/src/controllers/autoload-saasoperator-api-controllers.js +31 -0
- package/src/controllers/holder/autohooks.js +55 -0
- package/src/controllers/holder/get-exchange-progress/autohooks.js +27 -0
- package/src/controllers/holder/get-exchange-progress/controller.js +50 -0
- package/src/controllers/holder/inspect/autohooks.js +35 -0
- package/src/controllers/holder/inspect/get-presentation-request/controller.js +100 -0
- package/src/controllers/holder/inspect/schemas/holder-disclosure.schema.json +73 -0
- package/src/controllers/holder/inspect/schemas/index.js +33 -0
- package/src/controllers/holder/inspect/schemas/presentation-definition.v1.schema.json +461 -0
- package/src/controllers/holder/inspect/schemas/presentation-request.schema.json +279 -0
- package/src/controllers/holder/inspect/schemas/presentation-submission.schema.json +41 -0
- package/src/controllers/holder/inspect/schemas/siop-presentation-submission.schema.json +74 -0
- package/src/controllers/holder/inspect/schemas/velocity-presentation-submission.response.200.schema.json +36 -0
- package/src/controllers/holder/inspect/schemas/velocity-presentation-submission.schema.json +34 -0
- package/src/controllers/holder/inspect/submit-presentation/controller.js +89 -0
- package/src/controllers/holder/issue/autohooks.js +23 -0
- package/src/controllers/holder/issue/get-credential-manifest/controller.js +193 -0
- package/src/controllers/holder/issue/offers/autohooks.js +35 -0
- package/src/controllers/holder/issue/offers/controller.js +164 -0
- package/src/controllers/holder/issue/offers/credential-offers/controller.js +460 -0
- package/src/controllers/holder/issue/submit-identification/autohooks.js +37 -0
- package/src/controllers/holder/issue/submit-identification/controller.js +63 -0
- package/src/controllers/holder/oauth/autohooks.js +19 -0
- package/src/controllers/holder/oauth/controller.js +140 -0
- package/src/controllers/index.js +22 -0
- package/src/controllers/operator/tenants/_tenantId/autohooks.js +40 -0
- package/src/controllers/operator/tenants/_tenantId/check-credentials/autohooks.js +24 -0
- package/src/controllers/operator/tenants/_tenantId/check-credentials/controller-v0.8.js +200 -0
- package/src/controllers/operator/tenants/_tenantId/check-credentials/schemas/index.js +19 -0
- package/src/controllers/operator/tenants/_tenantId/check-credentials/schemas/vendor-credential.schema.json +244 -0
- package/src/controllers/operator/tenants/_tenantId/controller-v0.8.js +221 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/autohooks.js +30 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/controller-v0.8.js +271 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/autohooks.js +45 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/controller-v0.8.js +199 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/add-feed.schema.js +14 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/feed.schema.json +27 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/index.js +25 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/modify-feed-update-body.schema.js +18 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/_id/feeds/schemas/modify-feed.schema.json +19 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/autohooks.js +34 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/controller-v0.8.js +100 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/agent-disclosure-presentation-definition.schema.json +404 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/agent-disclosure.schema.js +24 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/index.js +29 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/new-agent-disclosure.schema.json +166 -0
- package/src/controllers/operator/tenants/_tenantId/disclosures/schemas/update-agent-disclosure.schema.js +20 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/_exchangeId/autohooks.js +30 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/_exchangeId/controller-v0.8.js +73 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/autohooks.js +19 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/controller-v0.8.js +150 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/schemas/get-exchange.response.body.json +147 -0
- package/src/controllers/operator/tenants/_tenantId/exchanges/schemas/index.js +21 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/autohooks.js +27 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/controller-v0.8.js +303 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/index.js +23 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/issued-credential.schema.json +115 -0
- package/src/controllers/operator/tenants/_tenantId/issued-credentials/schemas/revoke-credentials.schema.json +18 -0
- package/src/controllers/operator/tenants/_tenantId/keys/controller-v0.8.js +168 -0
- package/src/controllers/operator/tenants/_tenantId/offer-data/controller-v0.8.js +78 -0
- package/src/controllers/operator/tenants/_tenantId/offers/autohooks.js +34 -0
- package/src/controllers/operator/tenants/_tenantId/offers/controller-v0.8.js +253 -0
- package/src/controllers/operator/tenants/_tenantId/offers/schemas/index.js +23 -0
- package/src/controllers/operator/tenants/_tenantId/offers/schemas/new-vendor-offer.schema.js +47 -0
- package/src/controllers/operator/tenants/_tenantId/offers/schemas/vendor-offer.schema.json +56 -0
- package/src/controllers/operator/tenants/_tenantId/users/autohooks.js +24 -0
- package/src/controllers/operator/tenants/_tenantId/users/controller-v0.8.js +92 -0
- package/src/controllers/operator/tenants/_tenantId/users/schemas/index.js +23 -0
- package/src/controllers/operator/tenants/_tenantId/users/schemas/new-user.schema.json +13 -0
- package/src/controllers/operator/tenants/_tenantId/users/schemas/user.schema.json +16 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/autohooks.js +34 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/controller-v0.8.js +110 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/Credential.schema.js +18 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialOptions.schema.json +42 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialRequest.schema.json +13 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/IssueCredentialResponse.schema.json +19 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/LinkedDataProof.schema.json +43 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/VerifiableCredential.schema.js +16 -0
- package/src/controllers/operator/tenants/_tenantId/vc-api/credentials/schemas/index.js +31 -0
- package/src/controllers/operator/tenants/autohooks.js +65 -0
- package/src/controllers/operator/tenants/controller-v0.8.js +167 -0
- package/src/controllers/operator/tenants/schemas/index.js +41 -0
- package/src/controllers/operator/tenants/schemas/modify-secret.schema.json +11 -0
- package/src/controllers/operator/tenants/schemas/modify-tenant-v0.8.schema.json +44 -0
- package/src/controllers/operator/tenants/schemas/new-tenant-v0.8.schema.json +19 -0
- package/src/controllers/operator/tenants/schemas/new-tenant.response.200.schema.json +7 -0
- package/src/controllers/operator/tenants/schemas/secret-key-metadata.schema.json +31 -0
- package/src/controllers/operator/tenants/schemas/secret-key.schema.json +29 -0
- package/src/controllers/operator/tenants/schemas/secret-kid.schema.json +13 -0
- package/src/controllers/operator/tenants/schemas/secret-new-tenant-v0.8.schema.json +28 -0
- package/src/controllers/operator/tenants/schemas/secret-tenant-key-v0.8.schema.json +13 -0
- package/src/controllers/operator/tenants/schemas/tenant-key-v0.8.schema.json +14 -0
- package/src/controllers/operator/tenants/schemas/tenant-v0.8.schema.json +62 -0
- package/src/controllers/root/autohooks.js +23 -0
- package/src/controllers/root/controller.js +173 -0
- package/src/controllers/saasoperator/groups/_id/autohooks.js +9 -0
- package/src/controllers/saasoperator/groups/_id/controller.js +121 -0
- package/src/controllers/saasoperator/groups/autohooks.js +19 -0
- package/src/controllers/saasoperator/groups/controller.js +65 -0
- package/src/controllers/saasoperator/groups/schemas/group.schema.js +17 -0
- package/src/controllers/saasoperator/groups/schemas/index.js +4 -0
- package/src/controllers/saasoperator/groups/schemas/new-group.schema.js +13 -0
- package/src/entities/common/domains/get-json-at-path.js +28 -0
- package/src/entities/common/domains/index.js +17 -0
- package/src/entities/common/index.js +17 -0
- package/src/entities/credentials/domains/credential-format.js +22 -0
- package/src/entities/credentials/domains/index.js +19 -0
- package/src/entities/credentials/index.js +17 -0
- package/src/entities/deep-links/domains/extract-did.js +11 -0
- package/src/entities/deep-links/domains/index.js +20 -0
- package/src/entities/deep-links/domains/velocity-protocol-uri-to-http-uri.js +32 -0
- package/src/entities/deep-links/index.js +19 -0
- package/src/entities/disclosures/domains/assert-disclosure-active.js +21 -0
- package/src/entities/disclosures/domains/compute-disclosure-configuration-type.js +29 -0
- package/src/entities/disclosures/domains/constants.js +61 -0
- package/src/entities/disclosures/domains/errors.js +34 -0
- package/src/entities/disclosures/domains/get-disclosure-configuration-type.js +60 -0
- package/src/entities/disclosures/domains/index.js +32 -0
- package/src/entities/disclosures/domains/is-issuing-disclosure.js +23 -0
- package/src/entities/disclosures/domains/parse-body-to-disclosure.js +17 -0
- package/src/entities/disclosures/domains/validate-by-identification-method.js +69 -0
- package/src/entities/disclosures/domains/validate-commercial-entity.js +26 -0
- package/src/entities/disclosures/domains/validate-disclosure-by-configuration-type.js +47 -0
- package/src/entities/disclosures/domains/validate-disclosure-default-issuing.js +77 -0
- package/src/entities/disclosures/domains/validate-disclosure.js +37 -0
- package/src/entities/disclosures/domains/validate-feed.js +16 -0
- package/src/entities/disclosures/domains/validate-presentation-definition.js +54 -0
- package/src/entities/disclosures/domains/validate-vendor-endpoint.js +22 -0
- package/src/entities/disclosures/domains/validate-vendor-webhook.js +18 -0
- package/src/entities/disclosures/factories/disclosure-factory.js +94 -0
- package/src/entities/disclosures/factories/index.js +19 -0
- package/src/entities/disclosures/index.js +22 -0
- package/src/entities/disclosures/orchestrators/get-disclosure.js +18 -0
- package/src/entities/disclosures/orchestrators/index.js +20 -0
- package/src/entities/disclosures/orchestrators/update-disclosure-configuration-type.js +32 -0
- package/src/entities/disclosures/repos/index.js +20 -0
- package/src/entities/disclosures/repos/repo.js +118 -0
- package/src/entities/disclosures/repos/set-configuration-type.js +33 -0
- package/src/entities/exchanges/adapters/index.js +17 -0
- package/src/entities/exchanges/adapters/sign-exchange-response.js +45 -0
- package/src/entities/exchanges/domains/build-exchange-progress.js +56 -0
- package/src/entities/exchanges/domains/constants.js +24 -0
- package/src/entities/exchanges/domains/ensure-exchange-state-valid.js +35 -0
- package/src/entities/exchanges/domains/errors.js +33 -0
- package/src/entities/exchanges/domains/index.js +25 -0
- package/src/entities/exchanges/domains/states.js +43 -0
- package/src/entities/exchanges/domains/types.js +31 -0
- package/src/entities/exchanges/factories/disclosure-exchange-factory.js +46 -0
- package/src/entities/exchanges/factories/index.js +20 -0
- package/src/entities/exchanges/factories/offer-exchange-factory.js +48 -0
- package/src/entities/exchanges/index.js +23 -0
- package/src/entities/exchanges/orchestrators/build-exchange-request-deep-link.js +50 -0
- package/src/entities/exchanges/orchestrators/index.js +19 -0
- package/src/entities/exchanges/repos/exchange-repo-projections.js +45 -0
- package/src/entities/exchanges/repos/exchange-state-repo-extension.js +76 -0
- package/src/entities/exchanges/repos/index.js +20 -0
- package/src/entities/exchanges/repos/repo.js +44 -0
- package/src/entities/feeds/factories/feed-factory.js +47 -0
- package/src/entities/feeds/factories/index.js +19 -0
- package/src/entities/feeds/index.js +20 -0
- package/src/entities/feeds/repos/index.js +19 -0
- package/src/entities/feeds/repos/repo.js +95 -0
- package/src/entities/groups/domains/format-group.js +11 -0
- package/src/entities/groups/domains/index.js +3 -0
- package/src/entities/groups/factories/group-factory.js +40 -0
- package/src/entities/groups/factories/index.js +19 -0
- package/src/entities/groups/index.js +22 -0
- package/src/entities/groups/orchestrators/find-group-or-error.js +16 -0
- package/src/entities/groups/orchestrators/index.js +6 -0
- package/src/entities/groups/orchestrators/validate-did.js +24 -0
- package/src/entities/groups/orchestrators/validate-group-by-user.js +16 -0
- package/src/entities/groups/orchestrators/validate-group.js +39 -0
- package/src/entities/groups/repos/delete-tenant-extension.js +13 -0
- package/src/entities/groups/repos/index.js +19 -0
- package/src/entities/groups/repos/repo.js +38 -0
- package/src/entities/groups/repos/update-or-error-extension.js +46 -0
- package/src/entities/index.js +37 -0
- package/src/entities/keys/domains/constants.js +37 -0
- package/src/entities/keys/domains/index.js +21 -0
- package/src/entities/keys/domains/is-matching-private-key-kid.js +41 -0
- package/src/entities/keys/domains/validate-key.js +62 -0
- package/src/entities/keys/factories/index.js +19 -0
- package/src/entities/keys/factories/key-factory.js +56 -0
- package/src/entities/keys/index.js +22 -0
- package/src/entities/keys/orchestrators/index.js +3 -0
- package/src/entities/keys/orchestrators/validate-did-doc-keys.js +69 -0
- package/src/entities/metadata-list-allocations/index.js +19 -0
- package/src/entities/metadata-list-allocations/repos/index.js +19 -0
- package/src/entities/metadata-list-allocations/repos/repo.js +40 -0
- package/src/entities/notifications/domains/index.js +19 -0
- package/src/entities/notifications/domains/notification-types.js +25 -0
- package/src/entities/notifications/index.js +19 -0
- package/src/entities/offers/domains/build-clean-pii-filter.js +35 -0
- package/src/entities/offers/domains/build-deeplink-url.js +120 -0
- package/src/entities/offers/domains/build-offer.js +88 -0
- package/src/entities/offers/domains/build-qr-code-url.js +37 -0
- package/src/entities/offers/domains/constants.js +32 -0
- package/src/entities/offers/domains/filter-object-ids.js +34 -0
- package/src/entities/offers/domains/generate-issuing-challenge.js +26 -0
- package/src/entities/offers/domains/generate-link-code.js +35 -0
- package/src/entities/offers/domains/index.js +31 -0
- package/src/entities/offers/domains/post-validation-offers-handler.js +31 -0
- package/src/entities/offers/domains/prepare-linked-credentials-for-holder.js +36 -0
- package/src/entities/offers/domains/resolve-subject.js +142 -0
- package/src/entities/offers/domains/validate-offer-commercial-entity.js +24 -0
- package/src/entities/offers/domains/validate-offer.js +90 -0
- package/src/entities/offers/factories/index.js +19 -0
- package/src/entities/offers/factories/offer-factory.js +119 -0
- package/src/entities/offers/index.js +22 -0
- package/src/entities/offers/orchestrators/create-verifiable-credentials.js +131 -0
- package/src/entities/offers/orchestrators/finalize-exchange.js +44 -0
- package/src/entities/offers/orchestrators/index.js +23 -0
- package/src/entities/offers/orchestrators/load-credential-refs.js +57 -0
- package/src/entities/offers/orchestrators/load-credential-types-map.js +44 -0
- package/src/entities/offers/orchestrators/prepare-offers.js +35 -0
- package/src/entities/offers/orchestrators/trigger-issued-credentials-webhook.js +63 -0
- package/src/entities/offers/repos/clean-pii-extension.js +85 -0
- package/src/entities/offers/repos/index.js +20 -0
- package/src/entities/offers/repos/issued-credential-projection.js +44 -0
- package/src/entities/offers/repos/repo.js +177 -0
- package/src/entities/presentations/domains/build-identity-doc.js +120 -0
- package/src/entities/presentations/domains/build-request-response-schema.js +46 -0
- package/src/entities/presentations/domains/build-vendor-data.js +31 -0
- package/src/entities/presentations/domains/check-payment-requirement.js +30 -0
- package/src/entities/presentations/domains/errors.js +28 -0
- package/src/entities/presentations/domains/extract-fields-from-id-credential.js +35 -0
- package/src/entities/presentations/domains/index.js +26 -0
- package/src/entities/presentations/domains/merge-credential-check-results.js +24 -0
- package/src/entities/presentations/domains/validate-presentation.js +128 -0
- package/src/entities/presentations/index.js +20 -0
- package/src/entities/presentations/orchestrators/create-presentation-request.js +148 -0
- package/src/entities/presentations/orchestrators/deduplicate-disclosure-exchange.js +52 -0
- package/src/entities/presentations/orchestrators/handle-presentation-submission.js +47 -0
- package/src/entities/presentations/orchestrators/index.js +20 -0
- package/src/entities/presentations/orchestrators/match-identity-on-exchange.js +114 -0
- package/src/entities/presentations/orchestrators/share-identification-credentials.js +110 -0
- package/src/entities/presentations/orchestrators/share-presentation.js +234 -0
- package/src/entities/push-delegate/get-push-delegate.js +37 -0
- package/src/entities/push-delegate/index.js +17 -0
- package/src/entities/redirect/index.js +3 -0
- package/src/entities/redirect/orchestrators/index.js +3 -0
- package/src/entities/redirect/orchestrators/load-org-info.js +40 -0
- package/src/entities/revocation-list-allocations/index.js +19 -0
- package/src/entities/revocation-list-allocations/repos/index.js +19 -0
- package/src/entities/revocation-list-allocations/repos/repo.js +40 -0
- package/src/entities/schemas/index.js +19 -0
- package/src/entities/schemas/orchestrators/index.js +19 -0
- package/src/entities/schemas/orchestrators/load-schema-validation.js +73 -0
- package/src/entities/tenants/domains/build-service-ids.js +27 -0
- package/src/entities/tenants/domains/extract-service.js +27 -0
- package/src/entities/tenants/domains/index.js +21 -0
- package/src/entities/tenants/domains/validate-service-ids.js +35 -0
- package/src/entities/tenants/factories/index.js +19 -0
- package/src/entities/tenants/factories/tenant-factory.js +37 -0
- package/src/entities/tenants/index.js +22 -0
- package/src/entities/tenants/orchestrators/add-primary-address-to-tenant.js +47 -0
- package/src/entities/tenants/orchestrators/create-tenant.js +91 -0
- package/src/entities/tenants/orchestrators/index.js +22 -0
- package/src/entities/tenants/orchestrators/refresh-tenant-dids.js +146 -0
- package/src/entities/tenants/orchestrators/set-tenant-default-issuing-disclosure.js +31 -0
- package/src/entities/tenants/repos/index.js +20 -0
- package/src/entities/tenants/repos/insert-tenant-extension.js +33 -0
- package/src/entities/tenants/repos/repo.js +52 -0
- package/src/entities/tenants/repos/tenant-default-projection.js +33 -0
- package/src/entities/tokens/adapters/access-token.js +49 -0
- package/src/entities/tokens/adapters/index.js +19 -0
- package/src/entities/tokens/index.js +19 -0
- package/src/entities/users/factories/index.js +19 -0
- package/src/entities/users/factories/user-factory.js +36 -0
- package/src/entities/users/index.js +20 -0
- package/src/entities/users/repos/add-anonymous-user-repo-extension.js +23 -0
- package/src/entities/users/repos/find-or-insert-vendor-user-repo-extension.js +30 -0
- package/src/entities/users/repos/index.js +19 -0
- package/src/entities/users/repos/repo.js +50 -0
- package/src/fetchers/index.js +20 -0
- package/src/fetchers/operator/identify-fetcher.js +36 -0
- package/src/fetchers/operator/index.js +21 -0
- package/src/fetchers/operator/inspection-fetcher.js +35 -0
- package/src/fetchers/operator/issuing-fetcher.js +50 -0
- package/src/fetchers/operator/webhook-auth-header.js +45 -0
- package/src/fetchers/push-gateway/generate-push-gateway-token.js +40 -0
- package/src/fetchers/push-gateway/index.js +19 -0
- package/src/fetchers/push-gateway/push-fetcher.js +39 -0
- package/src/index.js +19 -0
- package/src/init-holder-server.js +108 -0
- package/src/init-operator-server.js +101 -0
- package/src/init-server.js +120 -0
- package/src/main-holder.js +18 -0
- package/src/main-operator.js +19 -0
- package/src/main.js +18 -0
- package/src/plugins/autoload-repos.js +28 -0
- package/src/plugins/disclosure-loader-plugin.js +56 -0
- package/src/plugins/ensure-disclosure-active-plugin.js +30 -0
- package/src/plugins/ensure-disclosure-configuration-type-plugin.js +29 -0
- package/src/plugins/ensure-tenant-default-issuing-disclosure-id-plugin.js +60 -0
- package/src/plugins/ensure-tenant-primary-address-plugin.js +44 -0
- package/src/plugins/exchange-error-handler-plugin.js +51 -0
- package/src/plugins/exchange-loader-plugin.js +50 -0
- package/src/plugins/group-loader-plugin.js +51 -0
- package/src/plugins/index.js +32 -0
- package/src/plugins/kms-plugin.js +57 -0
- package/src/plugins/tenant-loader-plugin.js +91 -0
- package/src/plugins/validate-cao-plugin.js +81 -0
- package/src/plugins/vendor-routes-auth-plugin.js +24 -0
- package/src/plugins/verify-access-token-plugin.js +88 -0
- package/src/standalone.js +24 -0
- package/src/start-app-server.js +38 -0
- package/test/combined/app-redirect.test.js +199 -0
- package/test/combined/helpers/credentialagent-build-fastify.js +29 -0
- package/test/combined/helpers/index.js +22 -0
- package/test/combined/helpers/nock-registrar-app-schema-name.js +50 -0
- package/test/combined/helpers/nock-registrar-get-organization-diddoc.js +26 -0
- package/test/combined/helpers/nock-registrar-get-organization-verified-profile.js +33 -0
- package/test/combined/manifest.json.test.js +55 -0
- package/test/combined/root-controller.test.js +42 -0
- package/test/combined/schemas/education-degree.schema.json +166 -0
- package/test/combined/schemas/employment-current-v1.1.schema.json +253 -0
- package/test/combined/schemas/open-badge-credential.schema.json +1285 -0
- package/test/combined/schemas/past-employment-position-with-uri-id.schema.js +22 -0
- package/test/combined/schemas/past-employment-position.schema.json +148 -0
- package/test/combined/schemas/will-always-validate.json +10 -0
- package/test/combined/validate-cao-plugin.test.js +155 -0
- package/test/get-push-delegate.test.js +54 -0
- package/test/helpers/jwt-vc-expectation.js +109 -0
- package/test/holder/build-request-response-schema.test.js +55 -0
- package/test/holder/credential-manifest-controller.test.js +3192 -0
- package/test/holder/e2e-issuing-controller.test.js +425 -0
- package/test/holder/get-exchange-progress-controller.test.js +521 -0
- package/test/holder/get-presentation-request.test.js +906 -0
- package/test/holder/helpers/credential-type-metadata.js +98 -0
- package/test/holder/helpers/credentialagent-holder-build-fastify.js +32 -0
- package/test/holder/helpers/generate-presentation.js +441 -0
- package/test/holder/helpers/generate-test-access-token.js +54 -0
- package/test/holder/helpers/jwt-access-token-expectation.js +32 -0
- package/test/holder/helpers/jwt-vc-expectation.js +115 -0
- package/test/holder/issuing-controller.test.js +7076 -0
- package/test/holder/oauth-token-controller.test.js +412 -0
- package/test/holder/presentation-submission.test.js +2365 -0
- package/test/holder/submit-identification.test.js +4815 -0
- package/test/operator/check-credentials-controller-v0.8.test.js +832 -0
- package/test/operator/credentials-revoke.test.js +536 -0
- package/test/operator/disclosures-controller-v0.8.test.js +4157 -0
- package/test/operator/exchanges-controller-v0.8.test.js +414 -0
- package/test/operator/exchanges-id-controller-v0.8.test.js +162 -0
- package/test/operator/feeds-controller-v0.8.test.js +659 -0
- package/test/operator/generate-push-gateway-token.test.js +116 -0
- package/test/operator/groups-controller.test.js +145 -0
- package/test/operator/groups-id-controller.test.js +287 -0
- package/test/operator/helpers/create-test-org-doc.js +60 -0
- package/test/operator/helpers/credentialagent-operator-build-fastify.js +32 -0
- package/test/operator/helpers/find-kms-key.js +31 -0
- package/test/operator/helpers/generate-primary-and-add-operator-to-primary.js +63 -0
- package/test/operator/helpers/init-agent-kms.js +22 -0
- package/test/operator/issued-credentials-controller-v0.8.test.js +398 -0
- package/test/operator/keys-controller-v0.8.test.js +1130 -0
- package/test/operator/offer-data-controller-v0.8.test.js +253 -0
- package/test/operator/offers-controller-v0.8.test.js +3026 -0
- package/test/operator/set-configuration-type-modifier.test.js +75 -0
- package/test/operator/swagger.test.js +37 -0
- package/test/operator/tenant-controller-v0.8.test.js +730 -0
- package/test/operator/tenant-loader-plugin.test.js +96 -0
- package/test/operator/tenants-controller-v0.8.test.js +2093 -0
- package/test/operator/users-controller-v0.8.test.js +137 -0
- package/test/operator/vc-api-credentials.test.js +963 -0
- package/verification.env +28 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const initRequest = require('@verii/request');
|
|
18
|
+
const AutoLoad = require('@fastify/autoload');
|
|
19
|
+
const fastifyRoutes = require('@fastify/routes');
|
|
20
|
+
const path = require('path');
|
|
21
|
+
const { pick, omit } = require('lodash/fp');
|
|
22
|
+
const { vnfProtocolVersionPlugin } = require('@verii/fastify-plugins');
|
|
23
|
+
const {
|
|
24
|
+
authenticateVnfClientPlugin,
|
|
25
|
+
rpcProviderPlugin,
|
|
26
|
+
} = require('@verii/base-contract-io');
|
|
27
|
+
const { adminJwtAuthPlugin } = require('@verii/auth');
|
|
28
|
+
const { validationPlugin } = require('@verii/validation');
|
|
29
|
+
const Static = require('@fastify/static');
|
|
30
|
+
const { autoloadRepos, validateCaoPlugin } = require('./plugins');
|
|
31
|
+
const {
|
|
32
|
+
autoloadOperatorApiControllers,
|
|
33
|
+
autoloadRootApiController,
|
|
34
|
+
autoloadSaasoperatorApiControllers,
|
|
35
|
+
} = require('./controllers');
|
|
36
|
+
|
|
37
|
+
const initOperatorServer = (fastify) => {
|
|
38
|
+
if (!fastify.config.isTest) {
|
|
39
|
+
fastify.register(adminJwtAuthPlugin).register(authenticateVnfClientPlugin);
|
|
40
|
+
}
|
|
41
|
+
return fastify
|
|
42
|
+
.register(rpcProviderPlugin)
|
|
43
|
+
.register(vnfProtocolVersionPlugin)
|
|
44
|
+
.register(validationPlugin, {
|
|
45
|
+
ajv: fastify.config.validationPluginAjvOptions,
|
|
46
|
+
})
|
|
47
|
+
.register(fastifyRoutes)
|
|
48
|
+
.register(autoloadRepos, { path: `${__dirname}/entities` })
|
|
49
|
+
.register(autoloadOperatorApiControllers)
|
|
50
|
+
.register(autoloadRootApiController)
|
|
51
|
+
.register(autoloadSaasoperatorApiControllers)
|
|
52
|
+
.register(AutoLoad, {
|
|
53
|
+
dir: path.join(__dirname, 'controllers', 'operator'),
|
|
54
|
+
ignorePattern: /^.*index(\.ts|\.js|\.cjs|\.mjs)$/,
|
|
55
|
+
indexPattern: /^.*controller(\.ts|\.js|\.cjs|\.mjs)$/,
|
|
56
|
+
autoHooks: true,
|
|
57
|
+
cascadeHooks: true,
|
|
58
|
+
})
|
|
59
|
+
.decorate(
|
|
60
|
+
'baseVendorFetch',
|
|
61
|
+
initRequest({
|
|
62
|
+
...omit(['bearerToken'], fastify.config),
|
|
63
|
+
prefixUrl: fastify.config.vendorUrl,
|
|
64
|
+
})
|
|
65
|
+
)
|
|
66
|
+
.decorate(
|
|
67
|
+
'baseRegistrarFetch',
|
|
68
|
+
initRequest({
|
|
69
|
+
...pick(['nodeEnv', 'requestTimeout', 'traceIdHeader'], fastify.config),
|
|
70
|
+
prefixUrl: fastify.config.oracleUrl,
|
|
71
|
+
})
|
|
72
|
+
)
|
|
73
|
+
.decorate(
|
|
74
|
+
'baseUniversalResolverFetch',
|
|
75
|
+
initRequest({
|
|
76
|
+
...pick(['nodeEnv', 'requestTimeout', 'traceIdHeader'], fastify.config),
|
|
77
|
+
prefixUrl: fastify.config.universalResolverUrl,
|
|
78
|
+
})
|
|
79
|
+
)
|
|
80
|
+
.decorate(
|
|
81
|
+
'baseFetch',
|
|
82
|
+
initRequest({
|
|
83
|
+
...pick(['nodeEnv', 'requestTimeout', 'traceIdHeader'], fastify.config),
|
|
84
|
+
})
|
|
85
|
+
)
|
|
86
|
+
.decorate(
|
|
87
|
+
'baseLibFetch',
|
|
88
|
+
initRequest({
|
|
89
|
+
...pick(['nodeEnv', 'requestTimeout', 'traceIdHeader'], fastify.config),
|
|
90
|
+
prefixUrl: fastify.config.libUrl,
|
|
91
|
+
})
|
|
92
|
+
)
|
|
93
|
+
.register(Static, {
|
|
94
|
+
root: path.join(__dirname, 'assets/public'),
|
|
95
|
+
prefix: '/public',
|
|
96
|
+
wildcard: false,
|
|
97
|
+
})
|
|
98
|
+
.register(validateCaoPlugin);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
module.exports = { initOperatorServer };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const initRequest = require('@verii/request');
|
|
18
|
+
const Static = require('@fastify/static');
|
|
19
|
+
const fastifyRoutes = require('@fastify/routes');
|
|
20
|
+
const { adminJwtAuthPlugin } = require('@verii/auth');
|
|
21
|
+
const { vnfProtocolVersionPlugin } = require('@verii/fastify-plugins');
|
|
22
|
+
const {
|
|
23
|
+
authenticateVnfClientPlugin,
|
|
24
|
+
rpcProviderPlugin,
|
|
25
|
+
} = require('@verii/base-contract-io');
|
|
26
|
+
const { validationPlugin } = require('@verii/validation');
|
|
27
|
+
const { pick, omit } = require('lodash/fp');
|
|
28
|
+
const path = require('path');
|
|
29
|
+
const { autoloadRepos, validateCaoPlugin } = require('./plugins');
|
|
30
|
+
const {
|
|
31
|
+
autoloadHolderApiControllers,
|
|
32
|
+
autoloadOperatorApiControllers,
|
|
33
|
+
autoloadRootApiController,
|
|
34
|
+
autoloadSaasoperatorApiControllers,
|
|
35
|
+
} = require('./controllers');
|
|
36
|
+
|
|
37
|
+
const convertOldPath = {
|
|
38
|
+
'/test-integration': '/test-integration',
|
|
39
|
+
'/issuing/identify': '/issuing/identify',
|
|
40
|
+
'/issuing/generate-offers': '/offers/generate',
|
|
41
|
+
'/inspection/find-or-create-applicant': '/applicant',
|
|
42
|
+
'/inspection/add-credentials-to-applicant': '/applicant/addCredentials',
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const initMapVendorUrl = (config) => {
|
|
46
|
+
if (config.vendorVersion < 0.6) {
|
|
47
|
+
return (oldPath) => convertOldPath[oldPath];
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const initServer = (server) => {
|
|
53
|
+
if (!server.config.isTest) {
|
|
54
|
+
server.register(adminJwtAuthPlugin).register(authenticateVnfClientPlugin);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return server
|
|
58
|
+
.addContentTypeParser('*', (req, payload, done) => {
|
|
59
|
+
let data = '';
|
|
60
|
+
// eslint-disable-next-line better-mutation/no-mutation,no-return-assign
|
|
61
|
+
payload.on('data', (chunk) => (data += chunk));
|
|
62
|
+
payload.on('end', () => {
|
|
63
|
+
done(null, data);
|
|
64
|
+
});
|
|
65
|
+
})
|
|
66
|
+
.register(rpcProviderPlugin)
|
|
67
|
+
.register(vnfProtocolVersionPlugin)
|
|
68
|
+
.register(validationPlugin, {
|
|
69
|
+
ajv: server.config.validationPluginAjvOptions,
|
|
70
|
+
})
|
|
71
|
+
.register(fastifyRoutes)
|
|
72
|
+
.register(autoloadRepos, { path: `${__dirname}/entities` })
|
|
73
|
+
.register(autoloadOperatorApiControllers)
|
|
74
|
+
.register(autoloadHolderApiControllers)
|
|
75
|
+
.register(autoloadRootApiController)
|
|
76
|
+
.register(autoloadSaasoperatorApiControllers)
|
|
77
|
+
.decorate(
|
|
78
|
+
'baseVendorFetch',
|
|
79
|
+
initRequest({
|
|
80
|
+
...omit(['bearerToken'], server.config),
|
|
81
|
+
mapUrl: initMapVendorUrl(server.config),
|
|
82
|
+
prefixUrl: server.config.vendorUrl,
|
|
83
|
+
})
|
|
84
|
+
)
|
|
85
|
+
.decorate(
|
|
86
|
+
'baseRegistrarFetch',
|
|
87
|
+
initRequest({
|
|
88
|
+
...pick(['nodeEnv', 'requestTimeout', 'traceIdHeader'], server.config),
|
|
89
|
+
prefixUrl: server.config.oracleUrl,
|
|
90
|
+
})
|
|
91
|
+
)
|
|
92
|
+
.decorate(
|
|
93
|
+
'baseUniversalResolverFetch',
|
|
94
|
+
initRequest({
|
|
95
|
+
...pick(['nodeEnv', 'requestTimeout', 'traceIdHeader'], server.config),
|
|
96
|
+
prefixUrl: server.config.universalResolverUrl,
|
|
97
|
+
})
|
|
98
|
+
)
|
|
99
|
+
.decorate(
|
|
100
|
+
'baseFetch',
|
|
101
|
+
initRequest({
|
|
102
|
+
...pick(['nodeEnv', 'requestTimeout', 'traceIdHeader'], server.config),
|
|
103
|
+
})
|
|
104
|
+
)
|
|
105
|
+
.decorate(
|
|
106
|
+
'baseLibFetch',
|
|
107
|
+
initRequest({
|
|
108
|
+
...pick(['nodeEnv', 'requestTimeout', 'traceIdHeader'], server.config),
|
|
109
|
+
prefixUrl: server.config.libUrl,
|
|
110
|
+
})
|
|
111
|
+
)
|
|
112
|
+
.register(Static, {
|
|
113
|
+
root: path.join(__dirname, 'assets/public'),
|
|
114
|
+
prefix: '/public',
|
|
115
|
+
wildcard: false,
|
|
116
|
+
})
|
|
117
|
+
.register(validateCaoPlugin);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
module.exports = { initServer };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
const { startHolderAppServer } = require('./start-app-server');
|
|
17
|
+
|
|
18
|
+
startHolderAppServer();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const { startOperatorAppServer } = require('./start-app-server');
|
|
18
|
+
|
|
19
|
+
startOperatorAppServer();
|
package/src/main.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
const { startAppServer } = require('./start-app-server');
|
|
17
|
+
|
|
18
|
+
startAppServer();
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const fastifyAutoload = require('@fastify/autoload');
|
|
18
|
+
|
|
19
|
+
const autoloadRepos = async (fastify, options) =>
|
|
20
|
+
fastify.register(fastifyAutoload, {
|
|
21
|
+
dir: options.path,
|
|
22
|
+
indexPattern: /.*dont-match-indexes(\.ts|\.js|\.cjs|\.mjs)$/,
|
|
23
|
+
scriptPattern: /.*repo(\.ts|\.js|\.cjs|\.mjs)$/,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
module.exports = {
|
|
27
|
+
autoloadRepos,
|
|
28
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const newError = require('http-errors');
|
|
18
|
+
const { isEmpty } = require('lodash/fp');
|
|
19
|
+
const fp = require('fastify-plugin');
|
|
20
|
+
|
|
21
|
+
const getDisclosureId = ({ exchange, params }) => {
|
|
22
|
+
if (exchange?.disclosureId) {
|
|
23
|
+
return exchange.disclosureId;
|
|
24
|
+
}
|
|
25
|
+
if (params.id) {
|
|
26
|
+
return params.id;
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const loadDisclosure = async (req) => {
|
|
32
|
+
const disclosureId = getDisclosureId(req);
|
|
33
|
+
if (disclosureId == null) {
|
|
34
|
+
throw newError.BadRequest('No disclosureId sent by client');
|
|
35
|
+
}
|
|
36
|
+
const disclosure = await req.repos.disclosures.findById(disclosureId);
|
|
37
|
+
if (isEmpty(disclosure)) {
|
|
38
|
+
throw newError.NotFound(`Disclosure ${disclosureId} not found`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return disclosure;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const disclosureLoaderPlugin = (fastify, options, next) => {
|
|
45
|
+
fastify.decorateRequest('disclosure', null);
|
|
46
|
+
fastify.addHook('preHandler', async (req) => {
|
|
47
|
+
const disclosure = await loadDisclosure(req);
|
|
48
|
+
req.disclosure = disclosure;
|
|
49
|
+
});
|
|
50
|
+
next();
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
module.exports = {
|
|
54
|
+
disclosureLoaderPlugin: fp(disclosureLoaderPlugin),
|
|
55
|
+
loadDisclosure,
|
|
56
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const fp = require('fastify-plugin');
|
|
18
|
+
const { getDisclosure, assertDisclosureActive } = require('../entities');
|
|
19
|
+
|
|
20
|
+
const ensureDisclosureActivePlugin = (fastify, options, next) => {
|
|
21
|
+
fastify.addHook('preHandler', async (req) => {
|
|
22
|
+
const disclosure = await getDisclosure(req);
|
|
23
|
+
assertDisclosureActive(disclosure, req);
|
|
24
|
+
});
|
|
25
|
+
next();
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
module.exports = {
|
|
29
|
+
ensureDisclosureActivePlugin: fp(ensureDisclosureActivePlugin),
|
|
30
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const fp = require('fastify-plugin');
|
|
18
|
+
const { updateDisclosureConfigurationType } = require('../entities');
|
|
19
|
+
|
|
20
|
+
const ensureDisclosureConfigurationTypePlugin = (fastify, options, next) => {
|
|
21
|
+
fastify.addHook('preHandler', updateDisclosureConfigurationType);
|
|
22
|
+
next();
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
module.exports = {
|
|
26
|
+
ensureDisclosureConfigurationTypePlugin: fp(
|
|
27
|
+
ensureDisclosureConfigurationTypePlugin
|
|
28
|
+
),
|
|
29
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const fp = require('fastify-plugin');
|
|
18
|
+
const { isEmpty, isNull, isObject } = require('lodash/fp');
|
|
19
|
+
const {
|
|
20
|
+
VendorEndpointCategory,
|
|
21
|
+
IdentificationMethods,
|
|
22
|
+
} = require('../entities');
|
|
23
|
+
|
|
24
|
+
const ensureTenantDefaultIssuingDisclosureIdPlugin = (
|
|
25
|
+
fastify,
|
|
26
|
+
options,
|
|
27
|
+
next
|
|
28
|
+
) => {
|
|
29
|
+
fastify.addHook('preValidation', async (req) => {
|
|
30
|
+
const { tenant, repos } = req;
|
|
31
|
+
if (
|
|
32
|
+
isObject(tenant.defaultIssuingDisclosureId) ||
|
|
33
|
+
isNull(tenant.defaultIssuingDisclosureId)
|
|
34
|
+
) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const disclosures = await repos.disclosures.find({
|
|
38
|
+
filter: {
|
|
39
|
+
identificationMethods: {
|
|
40
|
+
$ne: [IdentificationMethods.PREAUTH],
|
|
41
|
+
},
|
|
42
|
+
vendorEndpoint: {
|
|
43
|
+
$in: VendorEndpointCategory.ISSUING,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
sort: { createdAt: -1 },
|
|
47
|
+
});
|
|
48
|
+
req.tenant = await req.repos.tenants.setDefaultIssuingDisclosure(
|
|
49
|
+
tenant._id,
|
|
50
|
+
isEmpty(disclosures) ? null : disclosures[0]._id
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
next();
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
module.exports = {
|
|
57
|
+
ensureTenantDefaultIssuingDisclosureIdPlugin: fp(
|
|
58
|
+
ensureTenantDefaultIssuingDisclosureIdPlugin
|
|
59
|
+
),
|
|
60
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const fp = require('fastify-plugin');
|
|
18
|
+
const { KeyPurposes } = require('@verii/crypto');
|
|
19
|
+
const { isEmpty } = require('lodash/fp');
|
|
20
|
+
const { addPrimaryAddressToTenant } = require('../entities');
|
|
21
|
+
|
|
22
|
+
const ensureTenantPrimaryAddressPlugin = (fastify, options, next) => {
|
|
23
|
+
fastify.addHook('preValidation', async (req) => {
|
|
24
|
+
const { tenant, repos } = req;
|
|
25
|
+
if (tenant.primaryAddress) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const key = await repos.keys.findOne({
|
|
29
|
+
filter: {
|
|
30
|
+
purposes: KeyPurposes.DLT_TRANSACTIONS,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
if (isEmpty(key)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
await addPrimaryAddressToTenant(tenant, req);
|
|
37
|
+
req.tenant = await req.repos.tenants.findOne({ _id: tenant._id });
|
|
38
|
+
});
|
|
39
|
+
next();
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
module.exports = {
|
|
43
|
+
ensureTenantPrimaryAddressPlugin: fp(ensureTenantPrimaryAddressPlugin),
|
|
44
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const fp = require('fastify-plugin');
|
|
18
|
+
const { ExchangeStates } = require('../entities');
|
|
19
|
+
|
|
20
|
+
const exchangeErrorHandlerPlugin = (fastify, options, next) => {
|
|
21
|
+
fastify.addHook('onError', async (req, reply, err) => {
|
|
22
|
+
const { repos, exchange, log } = req;
|
|
23
|
+
try {
|
|
24
|
+
if (!exchange || err.statusCode === 409) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
await repos.exchanges.addState(
|
|
28
|
+
exchange._id,
|
|
29
|
+
calcExchangeErrorState(err.exchangeErrorState, err.statusCode),
|
|
30
|
+
{
|
|
31
|
+
err: err.message,
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
} catch (dbError) {
|
|
35
|
+
log.error(dbError, 'DB Error when setting error state');
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
next();
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const calcExchangeErrorState = (exchangeErrorState, statusCode) => {
|
|
42
|
+
if (exchangeErrorState) {
|
|
43
|
+
return exchangeErrorState;
|
|
44
|
+
}
|
|
45
|
+
if (statusCode === 401) {
|
|
46
|
+
return ExchangeStates.NOT_IDENTIFIED;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return ExchangeStates.UNEXPECTED_ERROR;
|
|
50
|
+
};
|
|
51
|
+
module.exports = { exchangeErrorHandlerPlugin: fp(exchangeErrorHandlerPlugin) };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const newError = require('http-errors');
|
|
18
|
+
const fp = require('fastify-plugin');
|
|
19
|
+
|
|
20
|
+
const parseExchangeId = ({ params, query, body }) =>
|
|
21
|
+
params?.exchangeId ??
|
|
22
|
+
query?.exchangeId ??
|
|
23
|
+
query?.exchange_id ??
|
|
24
|
+
body?.exchangeId ??
|
|
25
|
+
body?.exchange_id;
|
|
26
|
+
|
|
27
|
+
const loadExchange = async (req) => {
|
|
28
|
+
const exchangeId = parseExchangeId(req);
|
|
29
|
+
if (exchangeId == null) {
|
|
30
|
+
throw newError.BadRequest('No exchangeId sent by client');
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const exchange = await req.repos.exchanges.findById(exchangeId);
|
|
34
|
+
return exchange;
|
|
35
|
+
} catch {
|
|
36
|
+
throw newError(404, `Exchange ${exchangeId} not found`, {
|
|
37
|
+
errorCode: 'exchange_not_found',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const exchangeLoaderPlugin = (fastify, options, next) => {
|
|
43
|
+
fastify.decorateRequest('exchange', null);
|
|
44
|
+
fastify.addHook('preHandler', async (req) => {
|
|
45
|
+
req.exchange = await loadExchange(req);
|
|
46
|
+
});
|
|
47
|
+
next();
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
module.exports = { exchangeLoaderPlugin: fp(exchangeLoaderPlugin) };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023 Velocity Team
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const { mongoDb } = require('@spencejs/spence-mongo-repos');
|
|
18
|
+
const fp = require('fastify-plugin');
|
|
19
|
+
const { isEmpty } = require('lodash/fp');
|
|
20
|
+
|
|
21
|
+
const loadGroup = async (db, req) => {
|
|
22
|
+
const { tenant } = req;
|
|
23
|
+
return db.collection('groups').findOne(
|
|
24
|
+
{
|
|
25
|
+
dids: tenant.did,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
_id: 1,
|
|
29
|
+
dids: 1,
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const groupLoaderPlugin = (fastify, options, next) => {
|
|
35
|
+
fastify.decorateRequest('group', null);
|
|
36
|
+
fastify.decorateRequest('caoDid', null);
|
|
37
|
+
fastify.addHook('onRequest', async (req) => {
|
|
38
|
+
req.group = await loadGroup(mongoDb(), req);
|
|
39
|
+
req.caoDid = getCaoDid(req);
|
|
40
|
+
});
|
|
41
|
+
next();
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const getCaoDid = (context) => {
|
|
45
|
+
const { group, config } = context;
|
|
46
|
+
return isEmpty(group) ? config.caoDid : group._id;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
module.exports = {
|
|
50
|
+
groupLoaderPlugin: fp(groupLoaderPlugin),
|
|
51
|
+
};
|