Skip to content

Commit

Permalink
feat: add issuance of Role without previous request
Browse files Browse the repository at this point in the history
  • Loading branch information
Jakub Sydor committed Oct 25, 2021
1 parent cea164f commit 7ca982d
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 0 deletions.
26 changes: 26 additions & 0 deletions docs/api/classes/GnosisIam.GnosisIam-1.md
Expand Up @@ -77,6 +77,7 @@ The domain ownership functionality has been redefined accordingly.
- [isConnected](GnosisIam.GnosisIam-1.md#isconnected)
- [isOwner](GnosisIam.GnosisIam-1.md#isowner)
- [isSessionActive](GnosisIam.GnosisIam-1.md#issessionactive)
- [issueClaim](GnosisIam.GnosisIam-1.md#issueclaim)
- [issueClaimRequest](GnosisIam.GnosisIam-1.md#issueclaimrequest)
- [issuePublicClaim](GnosisIam.GnosisIam-1.md#issuepublicclaim)
- [namespacesWithRelations](GnosisIam.GnosisIam-1.md#namespaceswithrelations)
Expand Down Expand Up @@ -1363,6 +1364,31 @@ boolean that indicates the session state

___

### issueClaim

**issueClaim**(`__namedParameters`): `Promise`<`string`\>

#### Parameters

| Name | Type |
| :------ | :------ |
| `__namedParameters` | `Object` |
| `__namedParameters.claim` | `Object` |
| `__namedParameters.claim.claimType` | `string` |
| `__namedParameters.claim.claimTypeVersion` | `number` |
| `__namedParameters.claim.fields` | { `key`: `string` ; `value`: `string` \| `number` }[] |
| `__namedParameters.subject` | `string` |

#### Returns

`Promise`<`string`\>

#### Inherited from

[IAM](iam.IAM.md).[issueClaim](iam.IAM.md#issueclaim)

___

### issueClaimRequest

**issueClaimRequest**(`__namedParameters`): `Promise`<`void`\>
Expand Down
22 changes: 22 additions & 0 deletions docs/api/classes/iam.IAM.md
Expand Up @@ -75,6 +75,7 @@ Decentralized Identity and Access Management (IAM) Type
- [isConnected](iam.IAM.md#isconnected)
- [isOwner](iam.IAM.md#isowner)
- [isSessionActive](iam.IAM.md#issessionactive)
- [issueClaim](iam.IAM.md#issueclaim)
- [issueClaimRequest](iam.IAM.md#issueclaimrequest)
- [issuePublicClaim](iam.IAM.md#issuepublicclaim)
- [namespacesWithRelations](iam.IAM.md#namespaceswithrelations)
Expand Down Expand Up @@ -1172,6 +1173,27 @@ boolean that indicates the session state

___

### issueClaim

**issueClaim**(`__namedParameters`): `Promise`<`string`\>

#### Parameters

| Name | Type |
| :------ | :------ |
| `__namedParameters` | `Object` |
| `__namedParameters.claim` | `Object` |
| `__namedParameters.claim.claimType` | `string` |
| `__namedParameters.claim.claimTypeVersion` | `number` |
| `__namedParameters.claim.fields` | { `key`: `string` ; `value`: `string` \| `number` }[] |
| `__namedParameters.subject` | `string` |

#### Returns

`Promise`<`string`\>

___

### issueClaimRequest

**issueClaimRequest**(`__namedParameters`): `Promise`<`void`\>
Expand Down
48 changes: 48 additions & 0 deletions src/iam.ts
Expand Up @@ -1523,6 +1523,54 @@ export class IAM extends IAMBase {
return canonizeSig(await this._signer.signMessage(arrayify(proofHash)));
}

async issueClaim({
claim,
subject,
}: {
claim: { claimType: string; claimTypeVersion: number; fields: { key: string; value: string | number }[] };
subject: string;
}) {
if (!this._did) {
throw new Error(ERROR_MESSAGES.USER_NOT_LOGGED_IN);
}
if (!this._jwt) {
throw new Error(ERROR_MESSAGES.JWT_NOT_INITIALIZED);
}
if (!this._signer) {
throw new Error(ERROR_MESSAGES.SIGNER_NOT_INITIALIZED);
}

await this.verifyEnrolmentPrerequisites({ subject, role: claim.claimType });

const message: IClaimIssuance = {
id: uuid(),
requester: subject,
claimIssuer: [this._did],
acceptedBy: this._did,
};

const publicClaim: IPublicClaim = {
did: subject,
signer: this._did,
claimData: claim,
};

message.issuedToken = await this.issuePublicClaim({
publicClaim,
});

if (this._natsConnection) {
const dataToSend = this._jsonCodec?.encode(message);
this._natsConnection.publish(`${subject}.${NATS_EXCHANGE_TOPIC}`, dataToSend);
} else if (this._cacheClient) {
await this._cacheClient.issueClaim({ did: this._did, message });
} else {
throw new NATSConnectionNotEstablishedError();
}

return message.issuedToken;
}

async createClaimRequest({
claim,
subject,
Expand Down

0 comments on commit 7ca982d

Please sign in to comment.