Skip to content

Commit

Permalink
feat: handle unexpected did service endpoint (#610)
Browse files Browse the repository at this point in the history
  • Loading branch information
Harasz committed Jul 21, 2022
1 parent b5822eb commit a360e93
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 14 deletions.
2 changes: 1 addition & 1 deletion docs/api/interfaces/modules_claims.IssueClaimOptions.md
Expand Up @@ -26,7 +26,7 @@ Claim params
| :------ | :------ | :------ |
| `claimType` | `string` | Role namespace |
| `claimTypeVersion` | `number` | Version of the role |
| `issuerFields?` | { `key`: `string` ; `value`: `string` \| `number` }[] | Issuers fields that role is requiring |
| `issuerFields?` | `IssuerFields`[] | Issuers fields that role is requiring |

___

Expand Down
Expand Up @@ -42,7 +42,7 @@ ___

### issuerFields

`Optional` **issuerFields**: { `key`: `string` ; `value`: `string` \| `number` }[]
`Optional` **issuerFields**: `IssuerFields`[]

Issuer fields that role is requiring

Expand Down
Expand Up @@ -31,7 +31,7 @@ ___

### issuerFields

`Optional` **issuerFields**: { `key`: `string` ; `value`: `string` \| `number` }[]
`Optional` **issuerFields**: `IssuerFields`[]

Issuers fields that role is requiring

Expand Down
Expand Up @@ -37,7 +37,7 @@ ___

### issuerFields

`Optional` **issuerFields**: [`IssuerFields`](modules_verifiable_credentials.IssuerFields.md)[]
`Optional` **issuerFields**: `IssuerFields`[]

___

Expand Down
17 changes: 17 additions & 0 deletions docs/api/modules/modules_verifiable_credentials.md
Expand Up @@ -34,6 +34,7 @@

- [getVerifiableCredentialsService](modules_verifiable_credentials.md#getverifiablecredentialsservice)
- [isRoleCredential](modules_verifiable_credentials.md#isrolecredential)
- [validateRoleCredentialSubject](modules_verifiable_credentials.md#validaterolecredentialsubject)

## Type Aliases

Expand Down Expand Up @@ -144,3 +145,19 @@ ___
#### Returns

credential is VerifiableCredential<RoleCredentialSubject\>

___

### validateRoleCredentialSubject

**validateRoleCredentialSubject**(`subject`): `void`

#### Parameters

| Name | Type |
| :------ | :------ |
| `subject` | [`RoleCredentialSubjectParams`](../interfaces/modules_verifiable_credentials.RoleCredentialSubjectParams.md) |

#### Returns

`void`
49 changes: 39 additions & 10 deletions src/modules/did-registry/did-registry.service.ts
Expand Up @@ -57,6 +57,7 @@ import {
UpdatePublicKey,
} from './did-registry.validation';
import { getLogger } from '../../config/logger.config';
import { isVerifiableCredential } from '@ew-did-registry/credentials-interface';

const { JsonRpcProvider } = providers;

Expand Down Expand Up @@ -606,16 +607,44 @@ export class DidRegistry {
return { serviceEndpoint, ...rest };
}

const data = await this._ipfsStore.get(serviceEndpoint);
const { claimData, ...claimRest } = this._jwt?.decode(data) as {
claimData: ClaimData;
};
return {
serviceEndpoint,
...rest,
...claimData,
...claimRest,
} as IServiceEndpoint & ClaimData;
const tokenOrVc = await this._ipfsStore.get(serviceEndpoint);

if (/(^[\w-]*\.[\w-]*\.[\w-]*$)/.test(tokenOrVc)) {
const decodedData = this._jwt?.decode(tokenOrVc) as {
claimData: ClaimData;
};

if (!decodedData) {
return { serviceEndpoint, ...rest };
}

const { claimData, ...claimRest } = decodedData;

return {
serviceEndpoint,
...rest,
...claimData,
...claimRest,
};
}

try {
const data = JSON.parse(tokenOrVc);
if (isVerifiableCredential(data)) {
return {
serviceEndpoint,
...rest,
verifiableCredentials: data,
};
}
return {
serviceEndpoint,
...rest,
...data,
};
} catch {
return { serviceEndpoint, ...rest };
}
})
);
}
Expand Down

0 comments on commit a360e93

Please sign in to comment.