timrourke/incognito

View on GitHub
src/CognitoClient/CognitoCredentials.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

declare(strict_types=1);

namespace Incognito\CognitoClient;

/**
 * Class CognitoCredentials
 *
 * A value object to wrap the common credentials for your AWS Cognito User Pool
 *
 * @package Incognito\CognitoClient
 */
class CognitoCredentials
{
    /**
     * The AWS Cognito client ID
     *
     * @var string
     */
    private string $clientId;

    /**
     * The AWS Cognito client secret
     *
     * @var string
     */
    private string $clientSecret;

    /**
     * The AWS Cognito User Pool ID
     *
     * @var string
     */
    private string $userPoolId;

    /**
     * Constructor.
     *
     * @param string $cognitoClientId
     * @param string $cognitoClientSecret
     * @param string $cognitoUserPoolId
     */
    public function __construct(
        string $cognitoClientId,
        string $cognitoClientSecret,
        string $cognitoUserPoolId
    ) {
        $this->clientId     = $cognitoClientId;
        $this->clientSecret = $cognitoClientSecret;
        $this->userPoolId   = $cognitoUserPoolId;
    }

    /**
     * @return string
     */
    public function getClientId(): string
    {
        return $this->clientId;
    }

    /**
     * @return string
     */
    public function getClientSecret(): string
    {
        return $this->clientSecret;
    }

    /**
     * @return string
     */
    public function getUserPoolId(): string
    {
        return $this->userPoolId;
    }

    /**
     * Create a base64-encoded HMAC SHA256 signature to sign the SignUp request
     *
     * @param  string $username
     * @return string
     */
    public function getSecretHashForUsername(string $username): string
    {
        $secretHash = hash_hmac(
            'sha256',
            $username . $this->clientId,
            $this->clientSecret,
            true
        );

        return base64_encode($secretHash);
    }
}