Merge branch 'fix/active-user-query' into 'develop'
Active users must be confirmed, and other related fixes See merge request pleroma/pleroma!3267
This commit is contained in:
commit
91f74418b7
|
@ -289,15 +289,7 @@ def binary_id(%User{} = user), do: binary_id(user.id)
|
||||||
def account_status(%User{deactivated: true}), do: :deactivated
|
def account_status(%User{deactivated: true}), do: :deactivated
|
||||||
def account_status(%User{password_reset_pending: true}), do: :password_reset_pending
|
def account_status(%User{password_reset_pending: true}), do: :password_reset_pending
|
||||||
def account_status(%User{local: true, is_approved: false}), do: :approval_pending
|
def account_status(%User{local: true, is_approved: false}), do: :approval_pending
|
||||||
|
def account_status(%User{local: true, is_confirmed: false}), do: :confirmation_pending
|
||||||
def account_status(%User{local: true, is_confirmed: false}) do
|
|
||||||
if Config.get([:instance, :account_activation_required]) do
|
|
||||||
:confirmation_pending
|
|
||||||
else
|
|
||||||
:active
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def account_status(%User{}), do: :active
|
def account_status(%User{}), do: :active
|
||||||
|
|
||||||
@spec visible_for(User.t(), User.t() | nil) ::
|
@spec visible_for(User.t(), User.t() | nil) ::
|
||||||
|
|
|
@ -139,6 +139,7 @@ defp compose_query({:external, _}, query), do: location_query(query, false)
|
||||||
defp compose_query({:active, _}, query) do
|
defp compose_query({:active, _}, query) do
|
||||||
User.restrict_deactivated(query)
|
User.restrict_deactivated(query)
|
||||||
|> where([u], u.is_approved == true)
|
|> where([u], u.is_approved == true)
|
||||||
|
|> where([u], u.is_confirmed == true)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp compose_query({:legacy_active, _}, query) do
|
defp compose_query({:legacy_active, _}, query) do
|
||||||
|
|
|
@ -1563,31 +1563,15 @@ test "it deactivates a user, all follow relationships and all activities", %{use
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "delete/1 when confirmation is pending" do
|
test "delete/1 when confirmation is pending deletes the user" do
|
||||||
setup do
|
clear_config([:instance, :account_activation_required], true)
|
||||||
user = insert(:user, is_confirmed: false)
|
user = insert(:user, is_confirmed: false)
|
||||||
{:ok, user: user}
|
|
||||||
end
|
|
||||||
|
|
||||||
test "deletes user from database when activation required", %{user: user} do
|
{:ok, job} = User.delete(user)
|
||||||
clear_config([:instance, :account_activation_required], true)
|
{:ok, _} = ObanHelpers.perform(job)
|
||||||
|
|
||||||
{:ok, job} = User.delete(user)
|
refute User.get_cached_by_id(user.id)
|
||||||
{:ok, _} = ObanHelpers.perform(job)
|
refute User.get_by_id(user.id)
|
||||||
|
|
||||||
refute User.get_cached_by_id(user.id)
|
|
||||||
refute User.get_by_id(user.id)
|
|
||||||
end
|
|
||||||
|
|
||||||
test "deactivates user when activation is not required", %{user: user} do
|
|
||||||
clear_config([:instance, :account_activation_required], false)
|
|
||||||
|
|
||||||
{:ok, job} = User.delete(user)
|
|
||||||
{:ok, _} = ObanHelpers.perform(job)
|
|
||||||
|
|
||||||
assert %{deactivated: true} = User.get_cached_by_id(user.id)
|
|
||||||
assert %{deactivated: true} = User.get_by_id(user.id)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "delete/1 when approval is pending deletes the user" do
|
test "delete/1 when approval is pending deletes the user" do
|
||||||
|
@ -1830,13 +1814,6 @@ test "returns true when the account is unconfirmed and confirmation is required
|
||||||
assert User.visible_for(user, other_user) == :visible
|
assert User.visible_for(user, other_user) == :visible
|
||||||
end
|
end
|
||||||
|
|
||||||
test "returns true when the account is unconfirmed and confirmation is not required" do
|
|
||||||
user = insert(:user, local: true, is_confirmed: false)
|
|
||||||
other_user = insert(:user, local: true)
|
|
||||||
|
|
||||||
assert User.visible_for(user, other_user) == :visible
|
|
||||||
end
|
|
||||||
|
|
||||||
test "returns true when the account is unconfirmed and being viewed by a privileged account (confirmation required)" do
|
test "returns true when the account is unconfirmed and being viewed by a privileged account (confirmation required)" do
|
||||||
Pleroma.Config.put([:instance, :account_activation_required], true)
|
Pleroma.Config.put([:instance, :account_activation_required], true)
|
||||||
|
|
||||||
|
|
|
@ -165,14 +165,6 @@ test "creates a notification", %{emoji_react: emoji_react, poster: poster} do
|
||||||
{:ok, delete: delete_user, user: user}
|
{:ok, delete: delete_user, user: user}
|
||||||
end
|
end
|
||||||
|
|
||||||
test "when activation is not required", %{delete: delete, user: user} do
|
|
||||||
clear_config([:instance, :account_activation_required], false)
|
|
||||||
{:ok, _, _} = SideEffects.handle(delete)
|
|
||||||
ObanHelpers.perform_all()
|
|
||||||
|
|
||||||
assert User.get_cached_by_id(user.id).deactivated
|
|
||||||
end
|
|
||||||
|
|
||||||
test "when activation is required", %{delete: delete, user: user} do
|
test "when activation is required", %{delete: delete, user: user} do
|
||||||
clear_config([:instance, :account_activation_required], true)
|
clear_config([:instance, :account_activation_required], true)
|
||||||
{:ok, _, _} = SideEffects.handle(delete)
|
{:ok, _, _} = SideEffects.handle(delete)
|
||||||
|
|
Loading…
Reference in New Issue