defmodule Web.AuthController do
  use Web, :controller

  plug Ueberauth

  def callback(
        %{assigns: %{ueberauth_auth: %{provider: :mastodon} = auth, current_user: user}} = conn,
        _params
      ) do
    {:ok, _mastodon_account} =
      Core.Syndication.save_mastodon_account(user, %{
        uid: auth.uid,
        access_token: auth.credentials.token
      })

    conn
    |> put_flash(:info, "Mastodon account registered")
    |> redirect(to: ~p"/admin/syndication")
  end

  def callback(conn, _params) do
    conn
    |> put_flash(:error, "Mastodon auth failure")
    |> redirect(to: ~p"/admin/syndication")
  end
end