Skip to content

Commit

Permalink
feat: Added identityManagerSetAlias
Browse files Browse the repository at this point in the history
  • Loading branch information
simonas-notcat committed Oct 1, 2020
1 parent 2d60917 commit a2bd513
Show file tree
Hide file tree
Showing 16 changed files with 255 additions and 1 deletion.
17 changes: 16 additions & 1 deletion __tests__/shared/identityManager.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { TAgent, IIdentityManager, IKeyManager, IIdentity } from 'daf-core'
import { TAgent, IIdentityManager, IKeyManager, IIdentity } from '../../packages/daf-core/src'

type ConfiguredAgent = TAgent<IIdentityManager & IKeyManager>

Expand Down Expand Up @@ -290,6 +290,21 @@ export default (testContext: {
expect(importedIdentity).toEqual(exportedIdentity)
})

it('should set alias for identity', async () => {
const identity = await agent.identityManagerCreateIdentity()
const result = await agent.identityManagerSetAlias({
did: identity.did,
alias: 'carol',
})
expect(result).toEqual(true)

const identity2 = await agent.identityManagerGetIdentityByAlias({
alias: 'carol',
})

expect(identity2).toEqual({ ...identity, alias: 'carol' })
})

it.todo('should add key for did:ethr')
it.todo('should remove key for did:ethr')
it.todo('should add service for did:ethr')
Expand Down
37 changes: 37 additions & 0 deletions docs/api/daf-core.iidentitymanager.identitymanagersetalias.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [daf-core](./daf-core.md) &gt; [IIdentityManager](./daf-core.iidentitymanager.md) &gt; [identityManagerSetAlias](./daf-core.iidentitymanager.identitymanagersetalias.md)

## IIdentityManager.identityManagerSetAlias() method

Sets identity alias

<b>Signature:</b>

```typescript
identityManagerSetAlias(args: IIdentityManagerSetAliasArgs, context: IAgentContext<IKeyManager>): Promise<boolean>;
```

## Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| args | [IIdentityManagerSetAliasArgs](./daf-core.iidentitymanagersetaliasargs.md) | Required. Arguments to set identity alias |
| context | [IAgentContext](./daf-core.iagentcontext.md)<!-- -->&lt;[IKeyManager](./daf-core.ikeymanager.md)<!-- -->&gt; | <a href="../plugin.md#executing-plugin-methods">Execution context</a>. Requires <code>agent</code> that has [IKeyManager](./daf-core.ikeymanager.md) methods |

<b>Returns:</b>

Promise&lt;boolean&gt;

## Example


```typescript
const identity = await agent.identityManagerCreateIdentity()
const result = await agent.identityManagerSetAlias({
did: identity.did,
alias: 'carol',
})

```

1 change: 1 addition & 0 deletions docs/api/daf-core.iidentitymanager.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,5 @@ export interface IIdentityManager extends IPluginMethodMap
| [identityManagerImportIdentity(args, context)](./daf-core.iidentitymanager.identitymanagerimportidentity.md) | Imports identity |
| [identityManagerRemoveKey(args, context)](./daf-core.iidentitymanager.identitymanagerremovekey.md) | Removes a key from a DID Document |
| [identityManagerRemoveService(args, context)](./daf-core.iidentitymanager.identitymanagerremoveservice.md) | Removes a service from a DID Document |
| [identityManagerSetAlias(args, context)](./daf-core.iidentitymanager.identitymanagersetalias.md) | Sets identity alias |
13 changes: 13 additions & 0 deletions docs/api/daf-core.iidentitymanagersetaliasargs.alias.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [daf-core](./daf-core.md) &gt; [IIdentityManagerSetAliasArgs](./daf-core.iidentitymanagersetaliasargs.md) &gt; [alias](./daf-core.iidentitymanagersetaliasargs.alias.md)

## IIdentityManagerSetAliasArgs.alias property

Required. Identity alias

<b>Signature:</b>

```typescript
alias: string;
```
13 changes: 13 additions & 0 deletions docs/api/daf-core.iidentitymanagersetaliasargs.did.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [daf-core](./daf-core.md) &gt; [IIdentityManagerSetAliasArgs](./daf-core.iidentitymanagersetaliasargs.md) &gt; [did](./daf-core.iidentitymanagersetaliasargs.did.md)

## IIdentityManagerSetAliasArgs.did property

Required. DID

<b>Signature:</b>

```typescript
did: string;
```
21 changes: 21 additions & 0 deletions docs/api/daf-core.iidentitymanagersetaliasargs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [daf-core](./daf-core.md) &gt; [IIdentityManagerSetAliasArgs](./daf-core.iidentitymanagersetaliasargs.md)

## IIdentityManagerSetAliasArgs interface

Input arguments for [identityManagerSetAlias](./daf-core.iidentitymanager.identitymanagersetalias.md)

<b>Signature:</b>

```typescript
export interface IIdentityManagerSetAliasArgs
```

## Properties

| Property | Type | Description |
| --- | --- | --- |
| [alias](./daf-core.iidentitymanagersetaliasargs.alias.md) | string | Required. Identity alias |
| [did](./daf-core.iidentitymanagersetaliasargs.did.md) | string | Required. DID |

1 change: 1 addition & 0 deletions docs/api/daf-core.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ Provides [Agent](./daf-core.agent.md) implementation and defines [IResolver](./d
| [IIdentityManagerGetOrCreateIdentityArgs](./daf-core.iidentitymanagergetorcreateidentityargs.md) | Input arguments for [identityManagerGetOrCreateIdentity](./daf-core.iidentitymanager.identitymanagergetorcreateidentity.md) |
| [IIdentityManagerRemoveKeyArgs](./daf-core.iidentitymanagerremovekeyargs.md) | Input arguments for [identityManagerRemoveKey](./daf-core.iidentitymanager.identitymanagerremovekey.md) |
| [IIdentityManagerRemoveServiceArgs](./daf-core.iidentitymanagerremoveserviceargs.md) | Input arguments for [identityManagerRemoveService](./daf-core.iidentitymanager.identitymanagerremoveservice.md) |
| [IIdentityManagerSetAliasArgs](./daf-core.iidentitymanagersetaliasargs.md) | Input arguments for [identityManagerSetAlias](./daf-core.iidentitymanager.identitymanagersetalias.md) |
| [IKey](./daf-core.ikey.md) | Cryptographic key |
| [IKeyManager](./daf-core.ikeymanager.md) | Key manager interface |
| [IKeyManagerCreateKeyArgs](./daf-core.ikeymanagercreatekeyargs.md) | Input arguments for [keyManagerCreateKey](./daf-core.ikeymanager.keymanagercreatekey.md) |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [daf-identity-manager](./daf-identity-manager.md) &gt; [IdentityManager](./daf-identity-manager.identitymanager.md) &gt; [identityManagerSetAlias](./daf-identity-manager.identitymanager.identitymanagersetalias.md)

## IdentityManager.identityManagerSetAlias() method

Sets identity alias

<b>Signature:</b>

```typescript
identityManagerSetAlias({ did, alias }: IIdentityManagerSetAliasArgs, context: IAgentContext<IKeyManager>): Promise<boolean>;
```

## Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| { did, alias } | [IIdentityManagerSetAliasArgs](./daf-core.iidentitymanagersetaliasargs.md) | |
| context | [IAgentContext](./daf-core.iagentcontext.md)<!-- -->&lt;[IKeyManager](./daf-core.ikeymanager.md)<!-- -->&gt; | <a href="../plugin.md#executing-plugin-methods">Execution context</a>. Requires <code>agent</code> that has [IKeyManager](./daf-core.ikeymanager.md) methods |

<b>Returns:</b>

Promise&lt;boolean&gt;

1 change: 1 addition & 0 deletions docs/api/daf-identity-manager.identitymanager.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,5 @@ export declare class IdentityManager implements IAgentPlugin
| [identityManagerImportIdentity(identity, context)](./daf-identity-manager.identitymanager.identitymanagerimportidentity.md) | | Imports identity |
| [identityManagerRemoveKey({ did, kid, options }, context)](./daf-identity-manager.identitymanager.identitymanagerremovekey.md) | | Removes a key from a DID Document |
| [identityManagerRemoveService({ did, id, options }, context)](./daf-identity-manager.identitymanager.identitymanagerremoveservice.md) | | Removes a service from a DID Document |
| [identityManagerSetAlias({ did, alias }, context)](./daf-identity-manager.identitymanager.identitymanagersetalias.md) | | Sets identity alias |
12 changes: 12 additions & 0 deletions docs/methods.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,18 @@ Removes a key from a DID Document

Removes a service from a DID Document


### [identityManagerSetAlias](./api/daf-core.iidentitymanager.identitymanagersetalias.md)

Sets identity alias

```typescript
const identity = await agent.identityManagerCreateIdentity()
const result = await agent.identityManagerSetAlias({
did: identity.did,
alias: 'carol',
})
```
## [IMessageHandler](./api/daf-core.imessagehandler.md)


Expand Down
36 changes: 36 additions & 0 deletions packages/daf-core/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -448,6 +448,22 @@ export interface IIdentityManagerCreateIdentityArgs {
options?: object
}

/**
* Input arguments for {@link IIdentityManager.identityManagerSetAlias | identityManagerSetAlias}
* @public
*/
export interface IIdentityManagerSetAliasArgs {
/**
* Required. DID
*/
did: string

/**
* Required. Identity alias
*/
alias: string
}

/**
* Input arguments for {@link IIdentityManager.identityManagerGetOrCreateIdentity | identityManagerGetOrCreateIdentity}
* @public
Expand Down Expand Up @@ -628,6 +644,26 @@ export interface IIdentityManager extends IPluginMethodMap {
context: IAgentContext<IKeyManager>,
): Promise<IIdentity>

/**
* Sets identity alias
*
* @param args - Required. Arguments to set identity alias
* @param context - <a href="../plugin.md#executing-plugin-methods">Execution context</a>. Requires `agent` that has {@link daf-core#IKeyManager} methods
*
* @example
* ```typescript
* const identity = await agent.identityManagerCreateIdentity()
* const result = await agent.identityManagerSetAlias({
* did: identity.did,
* alias: 'carol',
* })
* ```
*/
identityManagerSetAlias(
args: IIdentityManagerSetAliasArgs,
context: IAgentContext<IKeyManager>,
): Promise<boolean>

/**
* Returns an existing identity or creates a new one for a specific alias
*/
Expand Down
15 changes: 15 additions & 0 deletions packages/daf-graphql/src/methods/identity-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,20 @@ export const identityManagerImportIdentity: IAgentGraphQLMethod = {
`,
}

export const identityManagerSetAlias: IAgentGraphQLMethod = {
type: 'Mutation',
query: `
mutation identityManagerSetAlias($did: String!, $alias: String!) {
identityManagerSetAlias(did: $did, alias: $alias)
}
`,
typeDef: `
extend type Mutation {
identityManagerSetAlias(did: String!, alias: String!): Boolean!
}
`,
}

export const supportedMethods: Record<string, IAgentGraphQLMethod> = {
identityManagerGetProviders,
identityManagerGetIdentities,
Expand All @@ -289,6 +303,7 @@ export const supportedMethods: Record<string, IAgentGraphQLMethod> = {
identityManagerAddKey,
identityManagerRemoveKey,
identityManagerImportIdentity,
identityManagerSetAlias,
}

export default supportedMethods
11 changes: 11 additions & 0 deletions packages/daf-identity-manager/src/identity-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
IIdentityManagerAddServiceArgs,
IIdentityManagerRemoveServiceArgs,
IIdentityManagerGetIdentitiesArgs,
IIdentityManagerSetAliasArgs,
} from 'daf-core'
import { AbstractIdentityStore } from './abstract-identity-store'

Expand Down Expand Up @@ -47,6 +48,7 @@ export class IdentityManager implements IAgentPlugin {
identityManagerGetIdentity: this.identityManagerGetIdentity.bind(this),
identityManagerGetIdentityByAlias: this.identityManagerGetIdentityByAlias.bind(this),
identityManagerCreateIdentity: this.identityManagerCreateIdentity.bind(this),
identityManagerSetAlias: this.identityManagerSetAlias.bind(this),
identityManagerGetOrCreateIdentity: this.identityManagerGetOrCreateIdentity.bind(this),
identityManagerImportIdentity: this.identityManagerImportIdentity.bind(this),
identityManagerDeleteIdentity: this.identityManagerDeleteIdentity.bind(this),
Expand Down Expand Up @@ -126,6 +128,15 @@ export class IdentityManager implements IAgentPlugin {
}
}

/** {@inheritDoc daf-core#IIdentityManager.identityManagerSetAlias} */
async identityManagerSetAlias(
{ did, alias }: IIdentityManagerSetAliasArgs,
context: IAgentContext<IKeyManager>,
): Promise<boolean> {
const identity = await this.store.get({ did })
identity.alias = alias
return await this.store.import(identity)
}
/** {@inheritDoc daf-core#IIdentityManager.identityManagerImportIdentity} */
async identityManagerImportIdentity(
identity: IIdentity,
Expand Down
43 changes: 43 additions & 0 deletions packages/daf-rest/src/openApiSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1520,6 +1520,49 @@ export const openApiSchema: OpenAPIV3.Document = {
}
}
},
"/identityManagerSetAlias": {
"post": {
"description": "Sets identity alias",
"operationId": "identityManagerSetAlias",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"did": {
"type": "string",
"description": "Required. DID"
},
"alias": {
"type": "string",
"description": "Required. Identity alias"
}
},
"required": [
"did",
"alias"
],
"additionalProperties": false,
"description": "Input arguments for {@link IIdentityManager.identityManagerSetAlias | identityManagerSetAlias}"
}
}
}
},
"responses": {
"200": {
"description": "Sets identity alias",
"content": {
"application/json": {
"schema": {
"type": "boolean"
}
}
}
}
}
}
},
"/handleMessage": {
"post": {
"description": "Parses and optionally saves a message",
Expand Down
7 changes: 7 additions & 0 deletions report/daf-core.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ export interface IIdentityManager extends IPluginMethodMap {
identityManagerImportIdentity(args: IIdentity, context: IAgentContext<IKeyManager>): Promise<IIdentity>;
identityManagerRemoveKey(args: IIdentityManagerRemoveKeyArgs, context: IAgentContext<IKeyManager>): Promise<any>;
identityManagerRemoveService(args: IIdentityManagerRemoveServiceArgs, context: IAgentContext<IKeyManager>): Promise<any>;
identityManagerSetAlias(args: IIdentityManagerSetAliasArgs, context: IAgentContext<IKeyManager>): Promise<boolean>;
}

// @public
Expand Down Expand Up @@ -159,6 +160,12 @@ export interface IIdentityManagerRemoveServiceArgs {
options?: object;
}

// @public
export interface IIdentityManagerSetAliasArgs {
alias: string;
did: string;
}

// @public
export interface IKey {
kid: string;
Expand Down
3 changes: 3 additions & 0 deletions report/daf-identity-manager.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { IIdentityManagerGetIdentityByAliasArgs } from 'daf-core';
import { IIdentityManagerGetOrCreateIdentityArgs } from 'daf-core';
import { IIdentityManagerRemoveKeyArgs } from 'daf-core';
import { IIdentityManagerRemoveServiceArgs } from 'daf-core';
import { IIdentityManagerSetAliasArgs } from 'daf-core';
import { IKey } from 'daf-core';
import { IKeyManager } from 'daf-core';
import { IService } from 'daf-core';
Expand Down Expand Up @@ -113,6 +114,8 @@ export class IdentityManager implements IAgentPlugin {
identityManagerRemoveKey({ did, kid, options }: IIdentityManagerRemoveKeyArgs, context: IAgentContext<IKeyManager>): Promise<any>;
// (undocumented)
identityManagerRemoveService({ did, id, options }: IIdentityManagerRemoveServiceArgs, context: IAgentContext<IKeyManager>): Promise<any>;
// (undocumented)
identityManagerSetAlias({ did, alias }: IIdentityManagerSetAliasArgs, context: IAgentContext<IKeyManager>): Promise<boolean>;
readonly methods: IIdentityManager;
}

Expand Down

0 comments on commit a2bd513

Please sign in to comment.