+++ /dev/null
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Web.Plugs.ConfirmUserPlug do
- @moduledoc """
- If a user has ever been granted an OAuth token, they are eligible to become
- confirmed, regardless of the account_activation_required setting. This plug
- will confirm a user if found.
- """
-
- alias Pleroma.User
- import Plug.Conn
-
- def init(opts), do: opts
-
- def call(%{assigns: %{user: %User{confirmation_pending: true} = user}} = conn, _opts) do
- with {:ok, user} <- confirm_user(user) do
- assign(conn, :user, user)
- end
- end
-
- def call(conn, _opts), do: conn
-
- defp confirm_user(%User{} = user) do
- user
- |> User.confirmation_changeset(need_confirmation: false)
- |> User.update_and_set_cache()
- end
-end
plug(Pleroma.Web.Plugs.UserEnabledPlug)
plug(Pleroma.Web.Plugs.SetUserSessionIdPlug)
plug(Pleroma.Web.Plugs.EnsureUserTokenAssignsPlug)
- plug(Pleroma.Web.Plugs.ConfirmUserPlug)
end
pipeline :base_api do
+++ /dev/null
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Web.Plugs.ConfirmUserPlugTest do
- use Pleroma.Web.ConnCase, async: true
- alias Pleroma.User
- alias Pleroma.Web.Plugs.ConfirmUserPlug
- import Pleroma.Factory
-
- test "it confirms an unconfirmed user", %{conn: conn} do
- %User{id: user_id} = user = insert(:user, confirmation_pending: true)
-
- conn =
- conn
- |> assign(:user, user)
- |> ConfirmUserPlug.call(%{})
-
- assert %Plug.Conn{assigns: %{user: %User{id: ^user_id, confirmation_pending: false}}} = conn
- assert %User{confirmation_pending: false} = User.get_by_id(user_id)
- end
-
- test "it does nothing without an unconfirmed user", %{conn: conn} do
- assert conn == ConfirmUserPlug.call(conn, %{})
-
- user = insert(:user, confirmation_pending: false)
- conn = assign(conn, :user, user)
- assert conn == ConfirmUserPlug.call(conn, %{})
- end
-end