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
15 def call(conn, _options) do
16 with %{auth_credentials: %{username: username}} <- conn.assigns,
17 {:ok, %User{} = user} <- user_fetcher(username) do
19 |> assign(:auth_user, user)
25 defp user_fetcher(username_or_email) do
29 # First, try logging in as if it was a name
30 user = Repo.get_by(User, %{nickname: username_or_email}) ->
33 # If we get nil, we try using it as an email
34 user = Repo.get_by(User, %{email: username_or_email}) ->