Sha256: ee2fb00e2687ff46d93f67489499e992fa07f53cebdde87596d2e0217fecc725

Contents?: true

Size: 1.35 KB

Versions: 2

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require('aws-sdk-cognitoidentityprovider')

module ConsoleTracker
  module Authenticators
    class CognitoAuthenticator
      attr_reader :username, :authenticator_settings

      def initialize
        @username = ConsoleTracker.user.name
        @authenticator_settings = ConsoleTracker.config.authenticator_settings
      end

      def authenticate(password)
        client.initiate_auth(
          auth_flow: 'USER_PASSWORD_AUTH',
          auth_parameters: {
            USERNAME: username,
            PASSWORD: password
          },
          client_id: client_id
        )
      end

      def change_temporary_password(session, new_password)
        client.respond_to_auth_challenge(
          challenge_name: 'NEW_PASSWORD_REQUIRED',
          challenge_responses: {
            USERNAME: username,
            NEW_PASSWORD: new_password
          },
          client_id: client_id,
          session: session
        )
      end

      private

      def client
        @client ||= Aws::CognitoIdentityProvider::Client.new(
          region: authenticator_settings[:region],
          access_key_id: authenticator_settings[:access_key_id],
          secret_access_key: authenticator_settings[:secret_access_key]
        )
      end

      def client_id
        @client_id ||= authenticator_settings[:client_id]
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
console_tracker-0.0.0.pre.beta3 lib/console_tracker/authenticators/cognito.rb
console_tracker-0.0.0.pre.beta2 lib/console_tracker/authenticators/cognito.rb