Sha256: 3886eb45e2b8b1aa28494c298730b92486aeebc64a0b7d020ae0399307c49c0a

Contents?: true

Size: 1.81 KB

Versions: 1

Compression:

Stored size: 1.81 KB

Contents

require 'omniauth'
require 'yoti'

module OmniAuth
  module Strategies
    class Yoti
      include OmniAuth::Strategy

      option :client_options

      def request_phase
        redirect "https://www.yoti.com/connect/#{options.client_options[:application_id]}"
      end

      uid { yoti_user_id }
      info {{
        name: yoti_user_id,
        base64_selfie_uri: base64_selfie_uri
      }}

      def extra
        @raw_info ||= {
          selfie: yoti_user_profile['selfie'],
          given_names: yoti_user_profile['given_names'],
          family_name: yoti_user_profile['family_name'],
          phone_number: yoti_user_profile['phone_number'],
          email_address: yoti_user_profile['email_address'],
          date_of_birth: yoti_user_profile['date_of_birth'],
          postal_address: yoti_user_profile['postal_address'],
          gender: yoti_user_profile['gender'],
          nationality: yoti_user_profile['nationality']
        }
      end

      private

      def yoti_activity_details
        @yoti_activity_details ||= begin
          configure_yoti_client!
          ::Yoti::Client.get_activity_details(token)
        end
      end

      def yoti_user_profile
        yoti_activity_details.user_profile
      end

      def yoti_user_id
        yoti_activity_details.user_id
      end

      def base64_selfie_uri
        yoti_activity_details.base64_selfie_uri
      end

      def configure_yoti_client!
        ::Yoti.configure do |config|
          config.client_sdk_id = options.client_options[:client_sdk_id]
          config.key_file_path = options.client_options[:key_file_path]
          config.key = options.client_options[:key]
          config.sdk_identifier = 'OmniAuth'
        end
      end

      def token
        Rack::Utils.parse_nested_query(request.query_string)['token']
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-yoti-1.1.3 lib/omniauth/strategies/yoti.rb