def __init__()

in serverless-rest-api/python-http-cdk/lib/cognito_stack.py [0:0]


    def __init__(self, scope: cdk.Construct, construct_id: str, admin_group_name="apiAdmins", **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        user_pool = CfnUserPool(
            self, "UserPoolInstance",
            user_pool_name=self.stack_name+"-UserPool",
            admin_create_user_config={'allowAdminCreateUserOnly': False},
            schema=[
                {
                    'attribute_data_type': 'String',
                    'name': 'name',
                    'mutable': True,
                    'required': True,
                },
                {
                    'attribute_data_type': 'String',
                    'name': 'email',
                    'mutable': True,
                    'required': True,
                },
            ],
            username_attributes=['email'],
        )
        user_pool_client = CfnUserPoolClient(
            self, "UserPoolClientInstance",
            client_name=self.stack_name+"UserPoolClient",
            user_pool_id=user_pool.ref,
            explicit_auth_flows=['ALLOW_USER_PASSWORD_AUTH','ALLOW_USER_SRP_AUTH','ALLOW_REFRESH_TOKEN_AUTH'],
            generate_secret=False,
            prevent_user_existence_errors='ENABLED',
            refresh_token_validity=30,
            supported_identity_providers=['COGNITO'],
            allowed_o_auth_flows_user_pool_client=True,
            allowed_o_auth_flows=['code'],
            allowed_o_auth_scopes=['email','openid'],
            callback_ur_ls=['http://localhost'],
        )
        user_pool_admin_group = cognito.CfnUserPoolGroup(
            self, "AdminUserPoolGroupInstance",
            user_pool_id=user_pool.ref,
            group_name=admin_group_name,
            description="User group for API Administrators",
            precedence=0
        )
        stack_name_prefix=self.stack_name.replace('-', '')
        cdk.CfnOutput(self, stack_name_prefix+'UserPool', export_name=stack_name_prefix+'UserPool', value=user_pool.ref, description='Cognito User Pool ID')
        cdk.CfnOutput(self, stack_name_prefix+'UserPoolClient', export_name=stack_name_prefix+'UserPoolClient', value=user_pool_client.ref, description='Cognito User Pool Application Client ID')
        cdk.CfnOutput(self, stack_name_prefix+'UserPoolAdminGroupName', export_name=stack_name_prefix+'UserPoolAdminGroupName', value=user_pool_admin_group.group_name, description='User Pool group name for API administrators')
        cdk.CfnOutput(self, stack_name_prefix+'CognitoLoginURL', export_name=stack_name_prefix+'CognitoLoginURL', value=f'https://${user_pool_client.ref}.auth.{cdk.Aws.REGION}.amazoncognito.com/login?client_id={user_pool_client.ref}&response_type=code&redirect_uri=http://localhost', description='Cognito User Pool Application Client Hosted Login UI URL')
        cdk.CfnOutput(self, stack_name_prefix+'CognitoAuthCommand', export_name=stack_name_prefix+'CognitoAuthCommand', value=f'aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --client-id {user_pool_client.ref} --auth-parameters USERNAME=<username>,PASSWORD=<password>', description='AWS CLI command for Amazon Cognito User Pool authentication')