diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/CognitoIdentity/CognitoIdentityProvider.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/CognitoIdentity/CognitoIdentityProvider.php | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/CognitoIdentity/CognitoIdentityProvider.php b/vendor/aws/aws-sdk-php/src/CognitoIdentity/CognitoIdentityProvider.php new file mode 100644 index 0000000..6284847 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/CognitoIdentity/CognitoIdentityProvider.php @@ -0,0 +1,61 @@ +<?php +namespace Aws\CognitoIdentity; + +use Aws\Credentials\Credentials; +use GuzzleHttp\Promise; + +class CognitoIdentityProvider +{ + /** @var CognitoIdentityClient */ + private $client; + /** @var string */ + private $identityPoolId; + /** @var string|null */ + private $accountId; + /** @var array */ + private $logins; + + public function __construct( + $poolId, + array $clientOptions, + array $logins = [], + $accountId = null + ) { + $this->identityPoolId = $poolId; + $this->logins = $logins; + $this->accountId = $accountId; + $this->client = new CognitoIdentityClient($clientOptions + [ + 'credentials' => false, + ]); + } + + public function __invoke() + { + return Promise\Coroutine::of(function () { + $params = $this->logins ? ['Logins' => $this->logins] : []; + $getIdParams = $params + ['IdentityPoolId' => $this->identityPoolId]; + if ($this->accountId) { + $getIdParams['AccountId'] = $this->accountId; + } + + $id = (yield $this->client->getId($getIdParams)); + $result = (yield $this->client->getCredentialsForIdentity([ + 'IdentityId' => $id['IdentityId'], + ] + $params)); + + yield new Credentials( + $result['Credentials']['AccessKeyId'], + $result['Credentials']['SecretKey'], + $result['Credentials']['SessionToken'], + (int) $result['Credentials']['Expiration']->format('U') + ); + }); + } + + public function updateLogin($key, $value) + { + $this->logins[$key] = $value; + + return $this; + } +} |