Sha256: a42135e96d34043ec427f37ff187a15a054802091a3fabe0dc60ed6e02d9bd3f

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

require 'omniauth-oauth2'

module OmniAuth
  module Strategies
    # OmniAuth OAuth2 Strategy for Younility API
    class Younility < OmniAuth::Strategies::OAuth2
      option :name, "younility"

      option :client_options, {
        site:           'https://app.younility.com',
        authorize_url:  '/api/oauth/authorize',
        token_url:      '/api/oauth/token'
      }

      def authorize_params
        super.tap do |params|
          params[:response_type] = 'code'
          params[:client_id] = client.id
          params[:redirect_uri] ||= callback_url
        end
      end

      def request_phase
        super
      end

      uid do
        raw_info['id']
      end

      info do
        {
          'id'                      => raw_info['id'],
          'name'                    => raw_info['name'],
          'email'                   => raw_info['email'],
          'default_organization_id' => raw_info['default_organization_id'],
          'default_role'            => raw_info['default_role']
        }
      end

      def raw_info
        @raw_info ||= access_token.get('/api/v0/whoami').parsed
      end

      def build_access_token
        token_params = {
          code:           request.params['code'],
          redirect_uri:   callback_url,
          client_id:      client.id,
          client_secret:  client.secret,
          grant_type:     'authorization_code'
        }
        client.get_token token_params
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-younility-1.0.0 lib/omniauth/strategies/younility.rb