summaryrefslogtreecommitdiff
path: root/lib/pleroma/web/oauth/authenticator.ex
blob: 86bbc41f07b8dac70da7b1976d6a408ebb3dcf9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
defmodule Pleroma.Web.Authenticator do
  alias Pleroma.User
  alias Comeonin.Pbkdf2

  @behaviour Pleroma.Web.AuthenticatorAdapter

  def get_user(%Plug.Conn{} = conn) do
    %{"authorization" => %{"name" => name, "password" => password}} = conn.params

    with {_, %User{} = user} <- {:user, User.get_by_nickname_or_email(name)},
         {_, true} <- {:checkpw, Pbkdf2.checkpw(password, user.password_hash)} do
      {:ok, user}
    else
      error ->
        {:error, error}
    end
  end

  def handle_error(%Plug.Conn{} = _conn, error) do
    error
  end
end