# Login Configurations

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

## Install Dependency

Package: affinidi-tdk/affinidi-tdk-php

```bash
composer require affinidi-tdk/affinidi-tdk-php
```

Check the latest version on the [Packagist repository](https://packagist.org/packages/affinidi-tdk/affinidi-tdk-php) or view the source on [GitHub](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient).

## Classes and Methods

### Configurations API

Use to manage Login Configuration to integrate Affinidi Login.

#### createLoginConfigurations

Creates a new login configuration to integrate Affinidi Login.

Parameters

    createLoginConfigurationInput
    [CreateLoginConfigurationInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/CreateLoginConfigurationInput.md)
    Required
  Application name and redirect URIs.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\ConfigurationApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'name' => 'Sample App',
        'redirectUris' => array(
            'http://localhost:3001/api/auth/callback',
        ),
    );
    $result = $apiInstance->createLoginConfigurations($request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### deleteLoginConfigurationsById

Deletes an existing login configuration by ID.

Parameters

    configurationId
    string
    Required
  ID of the login configuration to delete.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\ConfigurationApi(new GuzzleHttp\Client(), $config);

try {
    $apiInstance->deleteLoginConfigurationsById('');
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### getClientMetadataByClientId

Retrieves the client metadata of the login configuration by OAuth 2.0 client ID.

Parameters

    clientId
    string
    Required
  OAuth 2.0 client ID generated by the login configuration.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\ConfigurationApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->getClientMetadataByClientId('');
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### getLoginConfigurationsById

Retrieves the login configuration details by ID.

Parameters

    configurationId
    string
    Required
  ID of the login configuration to retrieve.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\ConfigurationApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->getLoginConfigurationsById('');
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### listLoginConfigurations

Returns all login configurations in the project.

Parameters

    limit
    integer
    Optional
  Maximum number of records to return.

    exclusiveStartKey
    string
    Optional
  Base64url-encoded pagination key.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\ConfigurationApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->listLoginConfigurations();
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### updateLoginConfigurationsById

Updates an existing login configuration by ID.

Parameters

    configurationId
    string
    Required
  ID of the login configuration to update.

    updateLoginConfigurationInput
    [UpdateLoginConfigurationInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/UpdateLoginConfigurationInput.md)
    Required
  Updated configuration name and redirect URIs.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\ConfigurationApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'name' => 'My Updated Login Config',
        'redirectUris' => array(
            'http://localhost:3001/api/auth/callback',
        ),
    );
    $result = $apiInstance->updateLoginConfigurationsById('', $request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

### Group API

Used to manage the User Groups for the Project.

#### addUserToGroup

Adds a user to a group.

Parameters

    groupName
    string
    Required
  Name of the group.

    addUserToGroupInput
    [AddUserToGroupInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/AddUserToGroupInput.md)
    Required
  User ID (DID) to add to the group.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\GroupApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'userId' => 'did:key:890890890890890',
    );
    $result = $apiInstance->addUserToGroup('', $request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### createGroup

Creates a user group.

Parameters

    createGroupInput
    CreateGroupInput
    Required
  Name of the user group.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\GroupApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'groupName' => '',
    );
    $result = $apiInstance->createGroup($request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### deleteGroup

Deletes a group by name.

Parameters

    groupName
    string
    Required
  Name of the group to delete.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\GroupApi(new GuzzleHttp\Client(), $config);

try {
    $apiInstance->deleteGroup('');
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### getGroupById

Retrieves a group by name.

Parameters

    groupName
    string
    Required
  Name of the group to retrieve.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\GroupApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->getGroupById('');
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### listGroupUserMappings

Returns all users in a group.

Parameters

    groupName
    string
    Required
  Name of the group.

    limit
    integer
    Optional
  Maximum number of records to return.

    exclusiveStartKey
    string
    Optional
  Base64url-encoded pagination key.

    sortOrder
    string
    Optional
  Sort order. Defaults to descending.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\GroupApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->listGroupUserMappings('');
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### listGroups

Returns all groups in the project.

No parameters required.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\GroupApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->listGroups();
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### removeUserFromGroup

Removes a user from a group.

Parameters

    groupName
    string
    Required
  Name of the group.

    removeUserFromGroupInput
    [RemoveUserFromGroupInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/RemoveUserFromGroupInput.md)
    Required
  User ID (DID) to remove from the group.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\GroupApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'userId' => 'did:key:890890890890890',
    );
    $result = $apiInstance->removeUserFromGroup('', $request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

### DenyList API

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

#### blockGroups

Blocks users by group.

Parameters

    groupNamesInput
    [GroupNamesInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/GroupNamesInput.md)
    Required
  List of group names to block.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\DenyListApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'groupNames' => array('', ''),
    );
    $result = $apiInstance->blockGroups($request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### blockUsers

Blocks users by user ID (DID).

Parameters

    blockedUsersInput
    [BlockedUsersInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/BlockedUsersInput.md)
    Required
  List of user IDs (DIDs) to block.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\DenyListApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'userIds' => array('', ''),
    );
    $result = $apiInstance->blockUsers($request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### listBlockedGroups

Returns the list of blocked groups.

Parameters

    pageToken
    string
    Optional
  Pagination token.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\DenyListApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->listBlockedGroups();
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### listBlockedUsers

Returns the list of blocked users.

Parameters

    pageToken
    string
    Optional
  Pagination token.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\DenyListApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->listBlockedUsers();
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### unblockGroups

Unblocks users by group.

Parameters

    groupNamesInput
    [GroupNamesInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/GroupNamesInput.md)
    Required
  List of group names to unblock.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\DenyListApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'groupNames' => array('', ''),
    );
    $result = $apiInstance->unblockGroups($request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### unblockUsers

Unblocks users by user ID (DID).

Parameters

    blockedUsersInput
    [BlockedUsersInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/BlockedUsersInput.md)
    Required
  List of user IDs (DIDs) to unblock.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\DenyListApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'userIds' => array('', ''),
    );
    $result = $apiInstance->unblockUsers($request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

### 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
    [GroupNamesInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/GroupNamesInput.md)
    Required
  List of group names to allow.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\AllowListApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'groupNames' => array('', ''),
    );
    $result = $apiInstance->allowGroups($request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### disallowGroups

Disallows access to users by group.

Parameters

    groupNamesInput
    [GroupNamesInput](https://github.com/affinidi/affinidi-tdk-php/tree/main/src/Clients/LoginConfigurationClient/docs/Model/GroupNamesInput.md)
    Required
  List of group names to disallow.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\AllowListApi(new GuzzleHttp\Client(), $config);

try {
    $request = array(
        'groupNames' => array('', ''),
    );
    $result = $apiInstance->disallowGroups($request);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```

#### listAllowedGroups

Returns the list of allowed groups.

Parameters

    pageToken
    string
    Optional
  Pagination token.

Example

```php
require_once 'vendor/autoload.php';
use AffinidiTdk\Clients\LoginConfigurationClient;

$tokenCallback = [$authProvider, 'fetchProjectScopedToken'];
$config = LoginConfigurationClient\Configuration::getDefaultConfiguration()->setApiKey('authorization', '', $tokenCallback);
$apiInstance = new LoginConfigurationClient\Api\AllowListApi(new GuzzleHttp\Client(), $config);

try {
    $result = $apiInstance->listAllowedGroups();
    print_r($result);
} catch (Exception $e) {
    echo 'Exception: ', $e->getMessage(), PHP_EOL;
}
```
