summaryrefslogtreecommitdiff
path: root/lib/matrix_app_service/auth_plug.ex
blob: 0768caaba2d338104de94b03be60f4474d06b2e1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
defmodule MatrixAppService.AuthPlug do
  @behaviour Plug
  import Plug.Conn
  require Logger

  @impl Plug
  def init(_opts) do
    Application.fetch_env!(:matrix_app_service, :homeserver_token)
  end

  @impl Plug
  def call(%Plug.Conn{params: %{"access_token" => hs_token}} = conn, config_hs_token)
      when hs_token == config_hs_token do
    conn
  end

  def call(conn, _config_hs_token) do
    Logger.warn("Received invalid homeserver token")

    conn
    |> put_status(:unauthorized)
    |> Phoenix.Controller.put_view(MatrixAppServiceWeb.ErrorView)
    |> Phoenix.Controller.render("401.json")
    |> halt
  end
end