Sha256: 8246d872bd7f1b9cbd449d2b9efec9fbad43f99aeacb3a5ed9d43492e68b26f6

Contents?: true

Size: 1.77 KB

Versions: 1

Compression:

Stored size: 1.77 KB

Contents

require 'omniauth-oauth2'

OmniAuth.config.add_camelization('nexaas_id', 'NexaasID')

module OmniAuth
  module Strategies
    class NexaasID < OmniAuth::Strategies::OAuth2
      DEFAULT_SCOPE = 'profile invite'.freeze

      def initialize(*args)
        @api_token = nil
        super
      end

      option :name, :nexaas_id
      option :client_options, site: 'https://id.nexaas.com'

      uid do
        raw_info['id']
      end

      info do
        {
          id: raw_info['id'],
          name: {
            first: raw_info['first_name'],
            last: raw_info['last_name']
          },
          fullname: raw_info['full_name'],
          email: raw_info['email'],
          picture_url: raw_info['picture']
        }
      end

      extra do
        {
          raw_info: raw_info,
          legacy: { api_token: @api_token }
        }
      end

      # Example:
      #
      #   {
      #     "id"=>"e9fa918b-a90e-49f3-86ec-e3ce92488a3e",
      #     "full_name"=>"John Doe",
      #     "email"=>"john@doe.com",
      #     "emails"=>[{"address"=>"john@doe.com", "confirmed"=>true}],
      #     "created_at"=>"2016-07-21T22:02:17Z",
      #     "updated_at"=>"2016-07-21T22:02:17Z",
      #     "_links"=>{
      #       "self"=>{
      #         "href"=>"https://id.nexaas.com/api/v1/users/e9fa918b-a90e-49f3-86ec-e3ce92488a3e"
      #       }
      #     }
      #   }
      def raw_info
        @raw_info ||= access_token.get('/api/v1/profile').parsed
      end

      def request_phase
        options[:authorize_params][:scopes] = options['scope'] || DEFAULT_SCOPE
        super
      end

      protected

      def build_access_token
        if (token = super) && token.params
          @api_token = token.params['api_token']
        end
        token
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-nexaas_id-0.1.2 lib/omniauth/strategies/nexaas_id.rb