Skip to main content

lib/providers/hackclub.ex

defmodule Amur.Providers.HackClub do
  @moduledoc """
  Hack Club OAuth provider for Amur.
  """
  use Amur.Provider

  def strategy, do: Assent.Strategy.OAuth2

  def base_config do
    [
      base_url: "https://auth.hackclub.com",
      authorize_url: "/oauth/authorize",
      token_url: "/oauth/token",
      user_url: "/api/v1/me",
      auth_method: :client_secret_post,
      authorization_params: [scope: "email slack_id name"]
    ]
  end

  def normalize_user(user) do
    identity = user["identity"]

    %{
      uid: identity["id"],
      email: identity["primary_email"],
      name: "#{identity["first_name"]} #{identity["last_name"]}",
      slack_id: identity["slack_id"]
    }
  end
end