1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Plugs.UserFetcherPlug do
14 def call(conn, _options) do
15 with %{auth_credentials: %{username: username}} <- conn.assigns,
16 {:ok, %User{} = user} <- user_fetcher(username) do
18 |> assign(:auth_user, user)
24 defp user_fetcher(username_or_email) do
28 # First, try logging in as if it was a name
29 user = Repo.get_by(User, %{nickname: username_or_email}) ->
32 # If we get nil, we try using it as an email
33 user = Repo.get_by(User, %{email: username_or_email}) ->