This library provides a CognitoUserProvider for Laravel.
composer require customergauge/cognito
In the auth.php
file, add the following settings:
Default Guard
'defaults' => [
'guard' => 'cognito-token',
'passwords' => 'users',
],
The new Guard configuration
'guards' => [
'cognito-token' => [
'driver' => 'token',
'provider' => 'cognito-provider',
'storage_key' => 'cognito_token',
'hash' => false,
],
],
The User Provider configuration
'providers' => [
'cognito-provider' => [
'driver' => \CustomerGauge\Cognito\CognitoUserProvider::class,
],
],
Cognito Environment Variables
/*
|--------------------------------------------------------------------------
| Cognito Custom Configuration
|--------------------------------------------------------------------------
|
| The following configuration is not part of standard Laravel application.
| We use it to configure the CognitoUserProvider process so that we can
| properly validate the JWT token provided by AWS Cognito.
|
*/
'cognito' => [
'pool' => env('AWS_COGNITO_USER_POOL_ID'),
'region' => env('AWS_COGNITO_USER_POOL_REGION'),
],
Configure the auth
middleware at App\Http\Kernel
with 'auth:cognito-token'
The last thing you'll need is to provide your own implementation of UserFactory
and register it in a ServiceProvider.
final class CognitoUserFactory implements UserFactory
{
public function make(array $payload): ?Authenticatable
{
return new MyUserObject(
$payload['username'],
$payload['custom:my_custom_cognito_attribute'],
);
}
}
In the provider:
$this->app->bind(CustomerGauge\Cognito\Contracts\UserFactory, App\Auth\CognitoUserFactory::class);