Skip to content

Commit

Permalink
feat: extract claim expiration timestamp to separate function
Browse files Browse the repository at this point in the history
  • Loading branch information
Harasz committed Jul 1, 2022
1 parent 3b3494e commit 6e0e329
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ ___

### roleDefinition

`Optional` **roleDefinition**: `IRoleDefinition` \| `IRoleDefinitionV2` \| `IOrganizationDefinition` \| `IAppDefinition`
`Optional` **roleDefinition**: `IRoleDefinition` \| `IOrganizationDefinition` \| `IAppDefinition` \| `IRoleDefinitionV2`

Role definition

Expand Down
10 changes: 5 additions & 5 deletions docs/api/modules/modules_claims.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
### Variables

- [agreement\_type\_hash](modules_claims.md#agreement_type_hash)
- [defaultClaimExpiry](modules_claims.md#defaultclaimexpiry)
- [erc712\_type\_hash](modules_claims.md#erc712_type_hash)
- [eternityTimestamp](modules_claims.md#eternitytimestamp)
- [proof\_type\_hash](modules_claims.md#proof_type_hash)
- [typedMsgPrefix](modules_claims.md#typedmsgprefix)

Expand Down Expand Up @@ -106,15 +106,15 @@ ___

___

### defaultClaimExpiry
### erc712\_type\_hash

`Const` **defaultClaimExpiry**: `number`
`Const` **erc712\_type\_hash**: `string`

___

### erc712\_type\_hash
### eternityTimestamp

`Const` **erc712\_type\_hash**: `string`
`Const` **eternityTimestamp**: `number`

___

Expand Down
51 changes: 33 additions & 18 deletions src/modules/claims/claims.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import jsonwebtoken from 'jsonwebtoken';
import { v4 } from 'uuid';
import {
IRoleDefinition,
IRoleDefinitionV2,
PreconditionType,
} from '@energyweb/credential-governance';
import {
Expand Down Expand Up @@ -36,7 +37,7 @@ import {
IClaimRejection,
IClaimRequest,
RegistrationTypes,
defaultClaimExpiry,
eternityTimestamp,
erc712_type_hash,
proof_type_hash,
typedMsgPrefix,
Expand Down Expand Up @@ -426,16 +427,13 @@ export class ClaimsService {
const strippedClaimData = this.stripClaimData(claimData);
const { claimType: role, claimTypeVersion: version } = claimData;

const defaultValidityPeriod = roleDefinition?.['defaultValidityPeriod'];
const roleDefinitionExpirationTimestamp = defaultValidityPeriod
? Date.now() + defaultValidityPeriod
: undefined;

const claimExpirationTimestamp =
expirationTimestamp || roleDefinitionExpirationTimestamp;
const claimExpirationTimestamp = this.getClaimExpirationTimestamp(
roleDefinition as IRoleDefinitionV2,
expirationTimestamp
);

if (registrationTypes.includes(RegistrationTypes.OnChain)) {
const expiry = claimExpirationTimestamp || defaultClaimExpiry;
const expiry = claimExpirationTimestamp || eternityTimestamp;
const onChainProof = await this.createOnChainProof(
role,
version,
Expand Down Expand Up @@ -538,7 +536,7 @@ export class ClaimsService {
onChainProof,
expirationTimestamp,
} = claim;
const expiry = expirationTimestamp || defaultClaimExpiry;
const expiry = expirationTimestamp || eternityTimestamp;
const data = this._claimManagerInterface.encodeFunctionData('register', [
addressOf(subject),
namehash(claimType),
Expand Down Expand Up @@ -643,13 +641,10 @@ export class ClaimsService {
acceptedBy: this._signerService.did,
};

const defaultValidityPeriod = roleDefinition?.['defaultValidityPeriod'];
const roleDefinitionExpirationTimestamp = defaultValidityPeriod
? Date.now() + defaultValidityPeriod
: undefined;

const claimExpirationTimestamp =
expirationTimestamp || roleDefinitionExpirationTimestamp;
const claimExpirationTimestamp = this.getClaimExpirationTimestamp(
roleDefinition as IRoleDefinitionV2,
expirationTimestamp
);

if (registrationTypes.includes(RegistrationTypes.OffChain)) {
const publicClaim: IPublicClaim = {
Expand Down Expand Up @@ -678,7 +673,7 @@ export class ClaimsService {

if (registrationTypes.includes(RegistrationTypes.OnChain)) {
const { claimType: role, claimTypeVersion: version } = claim;
const expiry = claimExpirationTimestamp || defaultClaimExpiry;
const expiry = claimExpirationTimestamp || eternityTimestamp;
const onChainProof = await this.createOnChainProof(
role,
version,
Expand Down Expand Up @@ -1434,4 +1429,24 @@ export class ClaimsService {
issuerResolver
);
}

/**
* Get claim expiration timestamp based on issuer value and role definition.
*
* @param {IRoleDefinitionV2} roleDefinition role definition
* @param {Number} [expirationTimestamp] issuer-defined expiration timestamp
*
* @return claim expiration timestamp
*/
private getClaimExpirationTimestamp(
roleDefinition: IRoleDefinitionV2,
expirationTimestamp?: number
) {
const defaultValidityPeriod = roleDefinition?.defaultValidityPeriod;
const roleDefinitionExpirationTimestamp = defaultValidityPeriod
? Date.now() + defaultValidityPeriod
: undefined;

return expirationTimestamp || roleDefinitionExpirationTimestamp;
}
}
2 changes: 1 addition & 1 deletion src/modules/claims/claims.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ export const agreement_type_hash = utils.id(
export const proof_type_hash = utils.id(
'Proof(address subject,bytes32 role,uint256 version,uint256 expiry,address issuer)'
);
export const defaultClaimExpiry = Number.MAX_SAFE_INTEGER - 1; // constraint of ethers.BigNumber
export const eternityTimestamp = Number.MAX_SAFE_INTEGER - 1; // constraint of ethers.BigNumber

export type RequestClaim = { requester: string; message: IClaimRequest };
export type IssueClaim = { issuer: string; message: IClaimIssuance };
Expand Down

0 comments on commit 6e0e329

Please sign in to comment.