Class: DomainsService
modules/domains.DomainsService
Service responsible for handling the request to ENS, creating roles/organizations/applications namespaces. See more information about ENS and domains in IAM stack here.
const { connectToCacheServer } = await initWithPrivateKeySigner(privateKey, rpcUrl);
const { domainsService } = await connectToCacheServer();
domainsService.createOrganization(...);
Table of contents
Constructors
Accessors
Methods
- changeAppOwnership
- changeOrgOwnership
- changeRoleOwnership
- checkExistenceOfDomain
- createApplication
- createOrganization
- createRole
- deleteApplication
- deleteOrganization
- deleteRole
- getAllowedRolesByIssuer
- getAllowedRolesByRevoker
- getAppsOfOrg
- getDIDsByRole
- getDefinition
- getENSTypesByOwner
- getENSTypesBySearchPhrase
- getOrgHierarchy
- getRolesByNamespace
- getSubOrgsByOrgNamespace
- getSubdomains
- init
- isOwner
- namespacesWithRelations
- readName
- registrationTypesOfRoles
- setRoleDefinition
- updateLegacyDefinition
- validateOwnership
- create
Constructors
constructor
• new DomainsService(_signerService
, _cacheClient
)
Parameters
Name | Type |
---|---|
_signerService |
SignerService |
_cacheClient |
CacheClient |
Accessors
domainReader
• get
domainReader(): DomainReader
Returns
DomainReader
Methods
changeAppOwnership
▸ changeAppOwnership(options
): Promise
<undefined
| ReturnStepWithRetryCheck
[]>
Change owner of application domain.
domainsService.changeAppOwnership({
namespace: 'auth.apps.energyweb.iam.ewc',
newOwner: '0x00...0',
returnSteps: true,
});
Parameters
Name | Type | Description |
---|---|---|
options |
ChangeAppOwnershipOptions |
object containing options |
Returns
Promise
<undefined
| ReturnStepWithRetryCheck
[]>
array of steps if returnSteps
is true
changeOrgOwnership
▸ changeOrgOwnership(options
): Promise
<undefined
| MulticallTx
>
Change owner of organization domain including all subdomains.
domainsService.changeOrgOwnership({
namespace: 'energyweb.iam.ewc',
newOwner: '0x00...0',
returnSteps: true,
withSubdomains: true,
});
Parameters
Name | Type | Description |
---|---|---|
options |
ChangeOrgOwnershipOptions |
object containing options |
Returns
Promise
<undefined
| MulticallTx
>
array of steps if returnSteps
is true
changeRoleOwnership
▸ changeRoleOwnership(options
): Promise
<void
>
Change owner of role domain.
domainsService.changeRoleOwnership({
namespace: 'root.roles.energyweb.iam.ewc',
newOwner: '0x00...0',
});
Parameters
Name | Type | Description |
---|---|---|
options |
ChangeRoleOwnershipOptions |
object containing options |
Returns
Promise
<void
>
checkExistenceOfDomain
▸ checkExistenceOfDomain(options
): Promise
<boolean
>
Check if domain exists in ENS registry.
domainsService.checkExistenceOfDomain({
domain: 'some.energyweb.iam.ewc',
});
Parameters
Name | Type | Description |
---|---|---|
options |
CheckExistenceOfDomainOptions |
object containing options |
Returns
Promise
<boolean
>
true if domain exists, false otherwise
createApplication
▸ createApplication(options
): Promise
<undefined
| ReturnStep
[]>
Create application domain with given definition for given namespace. Also includes creating subdomain for roles. (roles.yourApp.apps.yourOrg.ewc).
domainsService.createApplication({
appName: 'auth',
namespace: 'apps.energyweb.iam.ewc',
data: {
appName: 'Auth service',
},
returnSteps: true,
});
Parameters
Name | Type | Description |
---|---|---|
options |
CreateApplicationOptions |
object containing options |
Returns
Promise
<undefined
| ReturnStep
[]>
array of steps if returnSteps
is true
createOrganization
▸ createOrganization(options
): Promise
<undefined
| ReturnStep
[]>
Create organization domain with given definition for given namespace. Also includes creating subdomains for roles and applications. (roles.yourOrg.ewc, apps.yourOrg.ewc).
domainsService.createOrganization({
orgName: 'auth',
namespace: 'energyweb.iam.ewc',
data: {
orgName: 'Auth service',
},
returnSteps: true,
});
Parameters
Name | Type | Description |
---|---|---|
options |
CreateOrganizationOptions |
object containing options |
Returns
Promise
<undefined
| ReturnStep
[]>
array of steps if returnSteps
is true
createRole
▸ createRole(options
): Promise
<undefined
| ReturnStep
[]>
Create role domain with given definition for given namespace.
domainsService.createRole({
appName: 'root',
namespace: 'roles.energyweb.iam.ewc',
data: {
version: 1,
issuer: {
issuerType: 'DID',
did: ['did:ethr:volta:0x00...0'],
},
revoker: {
issuerType: 'DID',
did: ['did:ethr:volta:0x00...0'],
},
enrolmentPreconditions: [],
},
returnSteps: true,
});
Parameters
Name | Type | Description |
---|---|---|
options |
CreateRoleOptions |
object containing options |
Returns
Promise
<undefined
| ReturnStep
[]>
array of steps if returnSteps
is true
deleteApplication
▸ deleteApplication(options
): Promise
<undefined
| ReturnStepWithRetryCheck
[]>
Delete application domain and all subdomains.
domainsService.deleteApplication({
namespace: 'auth.apps.energyweb.iam.ewc',
returnSteps: true,
});
Parameters
Name | Type | Description |
---|---|---|
options |
DeleteApplicationOptions |
object containing options |
Returns
Promise
<undefined
| ReturnStepWithRetryCheck
[]>
array of steps if returnSteps
is true
deleteOrganization
▸ deleteOrganization(options
): Promise
<undefined
| ReturnStepWithRetryCheck
[]>
Delete organization domain and all subdomains.
domainsService.deleteOrganization({
namespace: 'energyweb.iam.ewc',
returnSteps: true,
});
Parameters
Name | Type | Description |
---|---|---|
options |
DeleteOrganizationOptions |
object containing options |
Returns
Promise
<undefined
| ReturnStepWithRetryCheck
[]>
array of steps if returnSteps
is true
deleteRole
▸ deleteRole(options
): Promise
<void
>
Delete role domain.
domainsService.deleteRole({
namespace: 'auth.roles.energyweb.iam.ewc',
});
Parameters
Name | Type | Description |
---|---|---|
options |
DeleteRoleOptions |
object containing options |
Returns
Promise
<void
>
getAllowedRolesByIssuer
▸ getAllowedRolesByIssuer(did
): Promise
<IRole
[]>
Get all roles that a DID can issue.
domainsService.getAllowedRolesByIssuer('did:ethr:0x00...0');
Parameters
Name | Type | Description |
---|---|---|
did |
string |
issuer DID |
Returns
Promise
<IRole
[]>
array of roles that the DID can issue
getAllowedRolesByRevoker
▸ getAllowedRolesByRevoker(did
): Promise
<IRole
[]>
Get all roles that a DID can revoke.
domainsService.getAllowedRolesByRevoker('did:ethr:0x00...0');
Parameters
Name | Type | Description |
---|---|---|
did |
string |
issuer DID |
Returns
Promise
<IRole
[]>
array of roles that the DID can issue
getAppsOfOrg
▸ getAppsOfOrg(org
): Promise
<IApp
[]>
Fetch all applications for organization namespace.
domainsService.getAppsOfOrg('energyweb.iam.ewc');
Parameters
Name | Type | Description |
---|---|---|
org |
string |
organization namespace |
Returns
Promise
<IApp
[]>
array of applications
getDIDsByRole
▸ getDIDsByRole(role
): Promise
<string
[]>
Get users did which have certain role.
domainsService.getDIDsByRole('auth.roles.energyweb.iam.ewc');
Parameters
Name | Type | Description |
---|---|---|
role |
string |
role namespace |
Returns
Promise
<string
[]>
array of users DID
getDefinition
▸ getDefinition(options
): Promise
<IRoleDefinition
| IRoleDefinitionV2
| IOrganizationDefinition
| IAppDefinition
>
Fetch cached domain definition for organization, application or role.
domainsService.getDefinition({
type: NamespaceType.Role,
namespace: 'auth.roles.energyweb.iam.ewc',
});
Parameters
Name | Type | Description |
---|---|---|
options |
GetDefinitionOptions |
object containing options |
Returns
Promise
<IRoleDefinition
| IRoleDefinitionV2
| IOrganizationDefinition
| IAppDefinition
>
domain definition
getENSTypesByOwner
▸ getENSTypesByOwner(options
): Promise
<IApp
[] | IRole
[] | IOrganization
[]>
Get all organization/application/role for certain owner.
domainsService.getENSTypesByOwner({
type: NamespaceType.Organization,
owner: '0x00...0',
withRelations: true,
});
Parameters
Name | Type | Description |
---|---|---|
options |
GetENSTypesByOwnerOptions |
object containing options |
Returns
Promise
<IApp
[] | IRole
[] | IOrganization
[]>
array of organizations/applications/roles for certain owner
getENSTypesBySearchPhrase
▸ getENSTypesBySearchPhrase(search
, types?
): Promise
<(IRole
| IOrganization
| IApp
)[]>
Search for organization/application/role with a given search phrase.
domainsService.getENSTypesBySearchPhrase({
types: [SearchType.App, SearchType.Org, SearchType.Role],
search: 'energyweb',
});
Parameters
Name | Type | Description |
---|---|---|
search |
string |
search phrase |
types? |
SearchType [] |
ENS types to search |
Returns
Promise
<(IRole
| IOrganization
| IApp
)[]>
array of founded organizations/applications/roles
getOrgHierarchy
▸ getOrgHierarchy(namespace
): Promise
<IOrganization
>
Get organization hierarchy. Max 20 levels deep.
domainsService.getOrgHierarchy('energyweb.iam.ewc');
Parameters
Name | Type | Description |
---|---|---|
namespace |
string |
organization namespace |
Returns
Promise
<IOrganization
>
organization with all nested sub-organizations
getRolesByNamespace
▸ getRolesByNamespace(options
): Promise
<IRole
[]>
Fetch all roles subdomains for certain domain.
domainsService.getRolesByNamespace({
parentType: NamespaceType.Application,
namespace: 'auth.apps.energyweb.iam.ewc',
});
Parameters
Name | Type | Description |
---|---|---|
options |
GetRolesByNamespaceOptions |
object containing options |
Returns
Promise
<IRole
[]>
array of role subdomains
getSubOrgsByOrgNamespace
▸ getSubOrgsByOrgNamespace(namespace
): Promise
<IOrganization
[]>
Fetch all sub-organizations for organization namespace.
domainsService.getSubOrgsByOrgNamespace('energyweb.iam.ewc');
Parameters
Name | Type | Description |
---|---|---|
namespace |
string |
organization namespace |
Returns
Promise
<IOrganization
[]>
array of sub-organizations
getSubdomains
▸ getSubdomains(options
): Promise
<string
[]>
Fetch subdomains for certain domain.
domainsService.getSubdomains({
domain: 'energyweb.iam.ewc',
mode: 'ALL',
});
Parameters
Name | Type | Description |
---|---|---|
options |
GetSubdomainsOptions |
object containing options |
Returns
Promise
<string
[]>
array of subdomains
init
▸ init(): Promise
<void
>
Returns
Promise
<void
>
isOwner
▸ isOwner(options
): Promise
<boolean
>
Check if user is owner of the domain.
domainsService.isOwner({
domain: 'energyweb.iam.ewc',
user: '0x00...0',
});
Parameters
Name | Type | Description |
---|---|---|
options |
IsOwnerOptions |
object containing options |
Returns
Promise
<boolean
>
true if user is owner, false otherwise
namespacesWithRelations
▸ namespacesWithRelations(namespaces
): Promise
<{ namespace
: string
; owner
: string
}[]>
Collect related data for given domain. Currently only related data is owner.
domainsService.namespacesWithRelations(['root.roles.energyweb.iam.ewc', 'admin.roles.energyweb.iam.ewc']);
@param {Array<String>} namespaces array of namespaces
@return object containing registration types for given roles as keys
#### Parameters
| Name | Type |
| :------ | :------ |
| `namespaces` | `string`[] |
#### Returns
`Promise`<{ `namespace`: `string` ; `owner`: `string` }[]\>
___
### readName
▸ **readName**(`namehashToRead`): `Promise`<`string`\>
#### Parameters
| Name | Type |
| :------ | :------ |
| `namehashToRead` | `string` |
#### Returns
`Promise`<`string`\>
___
### registrationTypesOfRoles
▸ **registrationTypesOfRoles**(`roles`): `Promise`<`Record`<`string`, `Set`<[`RegistrationTypes`](../enums/modules_claims.RegistrationTypes.md)\>\>\>
Get possible registration types for given roles.
```typescript
domainsService.registrationTypesOfRoles(['root.roles.energyweb.iam.ewc', 'admin.roles.energyweb.iam.ewc']);
@param {Array<String>} roles array of roles
@return object containing registration types for given roles as keys
#### Parameters
| Name | Type |
| :------ | :------ |
| `roles` | `string`[] |
#### Returns
`Promise`<`Record`<`string`, `Set`<[`RegistrationTypes`](../enums/modules_claims.RegistrationTypes.md)\>\>\>
___
### setRoleDefinition
▸ **setRoleDefinition**(`options`): `Promise`<`void`\>
Update ENS domain definition for already created domain.
```typescript
domainsService.setRoleDefinition({
name: 'auth.apps.energyweb.iam.ewc',
data: {
appName: 'Auth service',
}
});
Parameters
Name | Type | Description |
---|---|---|
options |
SetRoleDefinitionOptions |
object containing options |
Returns
Promise
<void
>
updateLegacyDefinition
▸ updateLegacyDefinition(domain
, data
): Promise
<boolean
>
Move domain to latest version of resolver.
In initial version, role definitions where contained in ENS PublicResolver. However, in order for key properties of role definitions to be readable on-chain, a new RoleDefinitionResolver is used. This function sets the resolver in the ENS to the new contract for definitions that are pointing to the old contract.
domainsService.updateLegacyDefinition({
namespace: 'energyweb.iam.ewc',
data: {
orgName: 'Energy Web Foundation',
},
});
@param {String} domain domain namespace to update
@param {DomainDefinition} data definition to apply to domain
@return true if domain was updated, false otherwise
#### Parameters
| Name | Type |
| :------ | :------ |
| `domain` | `string` |
| `data` | [`DomainDefinition`](../modules/modules_domains.md#domaindefinition) |
#### Returns
`Promise`<`boolean`\>
___
### validateOwnership
▸ **validateOwnership**(`options`): `Promise`<`string`[]\>
Get not owned domains in given namespace for current user.
```typescript
domainsService.validateOwnership({
namespace: 'energyweb.iam.ewc',
type: NamespaceType.Organization,
});
Parameters
Name | Type | Description |
---|---|---|
options |
ValidateOwnershipOptions |
object containing options |
Returns
Promise
<string
[]>
array of not owned domains
create
▸ Static
create(signerService
, cacheClient
): Promise
<DomainsService
>
Parameters
Name | Type |
---|---|
signerService |
SignerService |
cacheClient |
CacheClient |
Returns
Promise
<DomainsService
>