Fix delete activities not federating
[akkoma] / lib / pleroma / plugs / user_fetcher_plug.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Plugs.UserFetcherPlug do
6 alias Pleroma.User
7 alias Pleroma.Repo
8
9 import Plug.Conn
10
11 def init(options) do
12 options
13 end
14
15 def call(conn, _options) do
16 with %{auth_credentials: %{username: username}} <- conn.assigns,
17 {:ok, %User{} = user} <- user_fetcher(username) do
18 conn
19 |> assign(:auth_user, user)
20 else
21 _ -> conn
22 end
23 end
24
25 defp user_fetcher(username_or_email) do
26 {
27 :ok,
28 cond do
29 # First, try logging in as if it was a name
30 user = Repo.get_by(User, %{nickname: username_or_email}) ->
31 user
32
33 # If we get nil, we try using it as an email
34 user = Repo.get_by(User, %{email: username_or_email}) ->
35 user
36 end
37 }
38 end
39 end