From 926eb95c094ef5ddb7c3f67a500134262a6658c2 Mon Sep 17 00:00:00 2001 From: JGiter Date: Fri, 3 Dec 2021 12:05:04 +0200 Subject: [PATCH] feat(claim): move register onchain from issue --- ...les_claims_claims_service.ClaimsService.md | 19 ++++++++++++ src/modules/claims/claims.service.ts | 30 ++++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/docs/api/classes/modules_claims_claims_service.ClaimsService.md b/docs/api/classes/modules_claims_claims_service.ClaimsService.md index efe0e5fe..74a450ef 100644 --- a/docs/api/classes/modules_claims_claims_service.ClaimsService.md +++ b/docs/api/classes/modules_claims_claims_service.ClaimsService.md @@ -26,6 +26,7 @@ - [issueClaim](modules_claims_claims_service.ClaimsService.md#issueclaim) - [issueClaimRequest](modules_claims_claims_service.ClaimsService.md#issueclaimrequest) - [publishPublicClaim](modules_claims_claims_service.ClaimsService.md#publishpublicclaim) +- [registerOnchain](modules_claims_claims_service.ClaimsService.md#registeronchain) - [rejectClaimRequest](modules_claims_claims_service.ClaimsService.md#rejectclaimrequest) - [create](modules_claims_claims_service.ClaimsService.md#create) @@ -356,6 +357,24 @@ ulr to ipfs ___ +### registerOnchain + +▸ **registerOnchain**(`claimId`): `Promise`<`void`\> + +**`description`** Registers issued onchain claim with Claim manager + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `claimId` | `string` | + +#### Returns + +`Promise`<`void`\> + +___ + ### rejectClaimRequest ▸ **rejectClaimRequest**(`__namedParameters`): `Promise`<`void`\> diff --git a/src/modules/claims/claims.service.ts b/src/modules/claims/claims.service.ts index a2d9e9fb..45873e0f 100644 --- a/src/modules/claims/claims.service.ts +++ b/src/modules/claims/claims.service.ts @@ -25,6 +25,7 @@ import { erc712_type_hash, proof_type_hash, typedMsgPrefix, + Claim, } from "./claims.types"; import { DidRegistry } from "../didRegistry/didRegistry.service"; import { ClaimData } from "../didRegistry/did.types"; @@ -216,6 +217,33 @@ export class ClaimsService { return this._cacheClient.issueClaim(this._signerService.did, message); } + /** + * @description Registers issued onchain claim with Claim manager + */ + async registerOnchain(claimId: Claim["id"]) { + const claim = (await this.getClaimById(claimId)) as Required; + const { token, subjectAgreement, onChainProof } = claim; + const { claimData, sub } = this._didRegistry.jwt.decode(token) as { + claimData: { claimType: string; claimTypeVersion: number; expiry: number }; + sub: string; + }; + const expiry = claimData.expiry === undefined ? defaultClaimExpiry : claimData.expiry; + const { claimType: role, claimTypeVersion: version } = claimData; + const data = this._claimManagerInterface.encodeFunctionData("register", [ + addressOf(sub), + namehash(role), + version, + expiry, + addressOf(this._signerService.did), + subjectAgreement, + onChainProof, + ]); + await this._signerService.send({ + to: this._claimManager, + data, + }); + } + async rejectClaimRequest({ id, requesterDID }: { id: string; requesterDID: string }) { const message: IClaimRejection = { id, @@ -377,7 +405,7 @@ export class ClaimsService { private async createOnChainProof(role: string, version: number, expiry: number, subject: string): Promise { const messageId = Buffer.from(typedMsgPrefix, "hex"); - const chainId = await this._signerService.chainId; + const chainId = this._signerService.chainId; const domainSeparator = utils.keccak256( defaultAbiCoder.encode( ["bytes32", "bytes32", "bytes32", "uint256", "address"],