Sha256: ba02c475ef831f40cd03d2344ba4a58caaf6c1a4bb51b4aa75d0f732fe8282f9

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

require 'nokogiri'
require 'omniauth-http-basic'

module OmniAuth
  module Strategies
    class Broadworks < OmniAuth::Strategies::HttpBasic

      option :title,    "Broadworks Login"

      uid { content_of('Profile/details/userId') }

      credentials { {:username => username, :password => password, :expires_days => content_of('Profile/passwordExpiresDays')} }

      info do
        { :name => "#{content_of('Profile/details/firstName')} #{content_of('Profile/details/lastName')}",
          :nickname => request['username'] }
      end

      extra do
        { :number => content_of('Profile/details/number'),
          :extension => content_of('Profile/details/extension'),
          :group     => content_of('Profile/details/groupId'),
          :provider  => content_of('Profile/details/serviceProvider') }
      end

      protected

        def api_uri
          "#{options.endpoint}/user/#{username}/profile"
        end

        def username
          return unless request['username']
          request['username'].index('@') ? request['username'] : [request['username'], options.domain].join('@')
        end

        def xml_response
          @xml_response ||= Nokogiri.XML(authentication_response.body)
        end

        def content_of(path)
          xml_response.search(path).first.content
        end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-broadworks-1.0.1 lib/omniauth/strategies/broadworks.rb