Sha256: d7f67d36a124be6fdac4a2392ba224e62aa05904d2ae391d287c21d90056df00

Contents?: true

Size: 844 Bytes

Versions: 1

Compression:

Stored size: 844 Bytes

Contents

require 'omniauth-github'

module OmniAuth
  module Strategies
    class GitHubTeamMember < OmniAuth::Strategies::GitHub
      credentials do
        options['teams'].inject({}) do |base, key_value_pair|
          method_name, team_id = key_value_pair
          base[booleanize_method_name(method_name)] = team_member?(team_id)
          base
        end
      end

      def team_member?(team_id)
        response = access_token.get("/teams/#{team_id}/memberships/#{raw_info['login']}")
        response.status == 200 && response.parsed["state"] == "active"
      rescue ::OAuth2::Error
        false
      end

      def booleanize_method_name(method_name)
        return method_name if method_name =~ /\?$/
        return "#{method_name}?"
      end
    end
  end
end

OmniAuth.config.add_camelization "githubteammember", "GitHubTeamMember"

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-github-team-member-2.0.1 lib/omniauth/strategies/github_team_member.rb