# Login Configurations

> Manage Login Configurations and User Groups with Affinidi Login Service.

## Install Dependency

Package: @affinidi-tdk/login-configuration-client

```bash
npm install @affinidi-tdk/login-configuration-client --save
```

Check the latest version on the [npm registry](https://www.npmjs.com/package/@affinidi-tdk/login-configuration-client) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk/tree/main/clients/typescript/login-configuration-client).

## Classes and Methods

### Configurations API

Manages Login Configurations to integrate Affinidi Login.

#### createLoginConfigurations

Creates a new Login Configuration.

Parameters

    request
    [CreateLoginConfigurationInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/CreateLoginConfigurationInput.md)
    Required
  Configuration details for the application including name and redirect URIs.

Example

```typescript
import { ConfigurationApi, Configuration, CreateLoginConfigurationInput } from '@affinidi-tdk/login-configuration-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: CreateLoginConfigurationInput = {
  name: 'Sample App',
  redirectUris: ['http://localhost:3000/auth/callback'],
}

const { data } = await api.createLoginConfigurations(request)
```

#### deleteLoginConfigurationsById

Deletes an existing Login Configuration by ID.

Parameters

    configurationId
    string
    Required
  ID of the Login Configuration to delete.

Example

```typescript
import { ConfigurationApi, Configuration } from '@affinidi-tdk/login-configuration-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

await api.deleteLoginConfigurationsById('')
```

#### getClientMetadataByClientId

Retrieves the Client Metadata of a Login Configuration by OAuth 2.0 Client ID.

Parameters

    clientId
    string
    Required
  OAuth 2.0 Client ID generated by the Login Configuration.

Example

```typescript
import { ConfigurationApi, Configuration } from '@affinidi-tdk/login-configuration-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.getClientMetadataByClientId('')
```

#### getLoginConfigurationsById

Retrieves the Login Configuration details by ID.

Parameters

    configurationId
    string
    Required
  ID of the Login Configuration to retrieve.

Example

```typescript
import { ConfigurationApi, Configuration } from '@affinidi-tdk/login-configuration-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.getLoginConfigurationsById('')
```

#### listLoginConfigurations

Lists all Login Configurations in the project.

Parameters

    limit
    number
    Optional
  Maximum number of records to return.

    exclusiveStartKey
    string
    Optional
  Base64url-encoded key of the first item that this operation will evaluate (it is not returned). Use the value returned in the previous operation to paginate.

Example

```typescript
import { ConfigurationApi, Configuration } from '@affinidi-tdk/login-configuration-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.listLoginConfigurations()
```

#### updateLoginConfigurationsById

Updates an existing Login Configuration by ID.

Parameters

    configurationId
    string
    Required
  ID of the Login Configuration to update.

    request
    [UpdateLoginConfigurationInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/UpdateLoginConfigurationInput.md)
    Required
  Updated configuration details.

Example

```typescript
import { ConfigurationApi, Configuration, UpdateLoginConfigurationInput } from '@affinidi-tdk/login-configuration-client'

const api = new ConfigurationApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: UpdateLoginConfigurationInput = {
  name: 'My Updated Login Config',
  redirectUris: ['http://localhost:3001/api/auth/callback'],
}

const { data } = await api.updateLoginConfigurationsById('', request)
```

### Group API

Manages user groups for the project.

#### addUserToGroup

Adds a user to a user group.

Parameters

    groupName
    string
    Required
  Name of the group to add the user to.

    request
    [AddUserToGroupInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/AddUserToGroupInput.md)
    Required
  User ID to add to the group.

Example

```typescript
import { GroupApi, Configuration, AddUserToGroupInput } from '@affinidi-tdk/login-configuration-client'

const api = new GroupApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: AddUserToGroupInput = {
  userId: 'did:key:890890890890890',
}

const { data } = await api.addUserToGroup('', request)
```

#### createGroup

Creates a user group.

Parameters

    request
    [CreateGroupInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/CreateGroupInput.md)
    Required
  Name of the user group to create.

Example

```typescript
import { GroupApi, Configuration, CreateGroupInput } from '@affinidi-tdk/login-configuration-client'

const api = new GroupApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: CreateGroupInput = {
  groupName: '',
}

const { data } = await api.createGroup(request)
```

#### deleteGroup

Deletes a group by name.

Parameters

    groupName
    string
    Required
  Name of the group to delete.

Example

```typescript
import { GroupApi, Configuration } from '@affinidi-tdk/login-configuration-client'

const api = new GroupApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

await api.deleteGroup('')
```

#### getGroupById

Retrieves a group by name.

Parameters

    groupName
    string
    Required
  Name of the group to retrieve.

Example

```typescript
import { GroupApi, Configuration } from '@affinidi-tdk/login-configuration-client'

const api = new GroupApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.getGroupById('')
```

#### listGroupUserMappings

Lists all users in a group.

Parameters

    groupName
    string
    Required
  Name of the group to list users for.

    limit
    number
    Optional
  Maximum number of records to return.

    exclusiveStartKey
    string
    Optional
  Base64url-encoded key of the first item that this operation will evaluate (it is not returned). Use the value returned in the previous operation to paginate.

    sortOrder
    string
    Optional
  Sort order for the response. Defaults to descending ("desc").

Example

```typescript
import { GroupApi, Configuration } from '@affinidi-tdk/login-configuration-client'

const api = new GroupApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.listGroupUserMappings('')
```

#### listGroups

Lists all groups in the project.

No parameters required.

Example

```typescript
import { GroupApi, Configuration } from '@affinidi-tdk/login-configuration-client'

const api = new GroupApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const { data } = await api.listGroups()
```

#### removeUserFromGroup

Removes a user from a group.

Parameters

    groupName
    string
    Required
  Name of the group to remove the user from.

    request
    [RemoveUserFromGroupInput](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/RemoveUserFromGroupInput.md)
    Required
  User ID to remove from the group.

Example

```typescript
import { GroupApi, Configuration, RemoveUserFromGroupInput } from '@affinidi-tdk/login-configuration-client'

const api = new GroupApi(
  new Configuration({ apiKey: authProvider.fetchProjectScopedToken.bind(authProvider) })
)

const request: RemoveUserFromGroupInput = {
  userId: 'did:key:890890890890890',
}

const { data } = await api.removeUserFromGroup('', request)
```

### DenyList API

Used to block groups and users to deny access on services like Affinidi Login when users are authenticating.

#### blockGroups

Block users by group.

##### Parameters

GroupNamesInput [Object]

List of groups to block. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/GroupNamesInput.md).

##### Example

```TypeScript
import { DenyListApi, Configuration, GroupNamesInput } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new DenyListApi(authConfiguration)

const request: GroupNamesInput = [
    "",
    ""
]

const { data } = await api.blockGroups(request)
```

#### blockUsers

Block by User ID (DID).

##### Parameters

BlockedUsersInput [Object]

List of User IDs (DIDs) to block. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/BlockedUsersInput.md).

##### Example

```TypeScript
import { DenyListApi, Configuration, BlockedUsersInput } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new DenyListApi(authConfiguration)

const request: BlockedUsersInput = [
    "",
    ""
]

const { data } = await api.blockUsers(request)
```

#### listBlockedGroups

Get list of blocked groups.

##### Parameters

pageToken [String]

Used for pagination.

##### Example

```TypeScript
import { DenyListApi, Configuration } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new DenyListApi(authConfiguration)

const { data } = await api.listBlockedGroups()
```

#### listBlockedUsers

Get list of blocked users.

##### Parameters

pageToken [String]

Used for pagination.

##### Example

```TypeScript
import { DenyListApi, Configuration } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new DenyListApi(authConfiguration)

const { data } = await api.listBlockedUsers()
```

#### unblockGroups

Unblock users by group.

##### Parameters

GroupNamesInput [Object]

List of groups to block. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/GroupNamesInput.md).

##### Example

```TypeScript
import { DenyListApi, Configuration, GroupNamesInput } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new DenyListApi(authConfiguration)

const request: GroupNamesInput = [
    "",
    ""
]

const { data } = await api.unblockGroups(request)
```

#### unblockUsers

Unblock by User ID (DID).

##### Parameters

BlockedUsersInput [Object]

List of User IDs (DIDs) to block. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/BlockedUsersInput.md).

##### Example

```TypeScript
import { DenyListApi, Configuration, BlockedUsersInput } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new DenyListApi(authConfiguration)

const request: BlockedUsersInput = [
    "",
    ""
]

const { data } = await api.unblockUsers(request)
```

### AllowList API

Used to allow groups and users to grant access on services like Affinidi Login when users are authenticating.

#### allowGroups

Allows users by group.

##### Parameters

GroupNamesInput [Object]

List of groups to allow. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/GroupNamesInput.md).

##### Example

```TypeScript
import { AllowListApi, Configuration, GroupNamesInput } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new AllowListApi(authConfiguration)

const request: GroupNamesInput = [
    "",
    ""
]

const { data } = await api.allowGroups(request)
```

#### disallowGroups

Disallow access to users by group.

##### Parameters

GroupNamesInput [Object]

List of groups to disallow. See more [here](https://github.com/affinidi/affinidi-tdk/blob/main/clients/typescript/login-configuration-client/docs/GroupNamesInput.md).

##### Example

```TypeScript
import { AllowListApi, Configuration, GroupNamesInput } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new AllowListApi(authConfiguration)

const request: GroupNamesInput = [
    "",
    ""
]

const { data } = await api.disallowGroups(request)
```

#### listAllowedGroups

Get list of allowed groups.

##### Parameters

pageToken [String]

Used for pagination.

##### Example

```TypeScript
import { AllowListApi, Configuration } from '@affinidi-tdk/login-configuration-client'
```

```TypeScript
// Pass the projectScopedToken generated from AuthProvider package
const authConfiguration = new Configuration({
  apiKey: authProvider.fetchProjectScopedToken.bind(authProvider)
})

const api = new AllowListApi(authConfiguration)

const { data } = await api.listAllowedGroups()
```
