浏览代码

Change user.approval_pending field to user.is_approved

groups
Mark Felder 3 年前
父节点
当前提交
f7e59c28ed
共有 10 个文件被更改,包括 74 次插入54 次删除
  1. +15
    -15
      lib/pleroma/user.ex
  2. +2
    -2
      lib/pleroma/user/query.ex
  3. +1
    -1
      lib/pleroma/web/admin_api/views/account_view.ex
  4. +20
    -0
      priv/repo/migrations/20201016205220_refactor_approval_pending_user_field.exs
  5. +18
    -18
      test/pleroma/user_test.exs
  6. +13
    -13
      test/pleroma/web/admin_api/controllers/user_controller_test.exs
  7. +1
    -1
      test/pleroma/web/admin_api/search_test.exs
  8. +2
    -2
      test/pleroma/web/mastodon_api/controllers/account_controller_test.exs
  9. +1
    -1
      test/pleroma/web/o_auth/o_auth_controller_test.exs
  10. +1
    -1
      test/pleroma/web/twitter_api/twitter_api_test.exs

+ 15
- 15
lib/pleroma/user.ex 查看文件

@@ -112,7 +112,7 @@ defmodule Pleroma.User do
field(:is_locked, :boolean, default: false)
field(:confirmation_pending, :boolean, default: false)
field(:password_reset_pending, :boolean, default: false)
field(:approval_pending, :boolean, default: false)
field(:is_approved, :boolean, default: true)
field(:registration_reason, :string, default: nil)
field(:confirmation_token, :string, default: nil)
field(:default_scope, :string, default: "public")
@@ -288,7 +288,7 @@ defmodule Pleroma.User do
@spec account_status(User.t()) :: account_status()
def account_status(%User{deactivated: true}), do: :deactivated
def account_status(%User{password_reset_pending: true}), do: :password_reset_pending
def account_status(%User{local: true, approval_pending: true}), do: :approval_pending
def account_status(%User{local: true, is_approved: false}), do: :approval_pending

def account_status(%User{local: true, confirmation_pending: true}) do
if Config.get([:instance, :account_activation_required]) do
@@ -711,16 +711,16 @@ defmodule Pleroma.User do
opts[:need_confirmation]
end

need_approval? =
if is_nil(opts[:need_approval]) do
Config.get([:instance, :account_approval_required])
approved? =
if is_nil(opts[:approved]) do
!Config.get([:instance, :account_approval_required])
else
opts[:need_approval]
opts[:approved]
end

struct
|> confirmation_changeset(need_confirmation: need_confirmation?)
|> approval_changeset(need_approval: need_approval?)
|> approval_changeset(set_approval: approved?)
|> cast(params, [
:bio,
:raw_bio,
@@ -814,14 +814,14 @@ defmodule Pleroma.User do
end
end

def post_register_action(%User{approval_pending: true} = user) do
def post_register_action(%User{is_approved: false} = user) do
with {:ok, _} <- send_user_approval_email(user),
{:ok, _} <- send_admin_approval_emails(user) do
{:ok, user}
end
end

def post_register_action(%User{approval_pending: false, confirmation_pending: false} = user) do
def post_register_action(%User{is_approved: true, confirmation_pending: false} = user) do
with {:ok, user} <- autofollow_users(user),
{:ok, _} <- autofollowing_users(user),
{:ok, user} <- set_cache(user),
@@ -1624,8 +1624,8 @@ defmodule Pleroma.User do
end)
end

def approve(%User{approval_pending: true} = user) do
with chg <- change(user, approval_pending: false),
def approve(%User{is_approved: false} = user) do
with chg <- change(user, is_approved: true),
{:ok, user} <- update_and_set_cache(chg) do
post_register_action(user)
{:ok, user}
@@ -1684,7 +1684,7 @@ defmodule Pleroma.User do
is_locked: false,
confirmation_pending: false,
password_reset_pending: false,
approval_pending: false,
is_approved: true,
registration_reason: nil,
confirmation_token: nil,
domain_blocks: [],
@@ -2327,9 +2327,9 @@ defmodule Pleroma.User do
end

@spec approval_changeset(User.t(), keyword()) :: Changeset.t()
def approval_changeset(user, need_approval: need_approval?) do
params = if need_approval?, do: %{approval_pending: true}, else: %{approval_pending: false}
cast(user, params, [:approval_pending])
def approval_changeset(user, set_approval: approved?) do
params = if approved?, do: %{is_approved: true}, else: %{is_approved: false}
cast(user, params, [:is_approved])
end

def add_pinnned_activity(user, %Pleroma.Activity{id: id}) do


+ 2
- 2
lib/pleroma/user/query.ex 查看文件

@@ -138,7 +138,7 @@ defmodule Pleroma.User.Query do

defp compose_query({:active, _}, query) do
User.restrict_deactivated(query)
|> where([u], u.approval_pending == false)
|> where([u], u.is_approved == true)
end

defp compose_query({:legacy_active, _}, query) do
@@ -159,7 +159,7 @@ defmodule Pleroma.User.Query do
end

defp compose_query({:need_approval, _}, query) do
where(query, [u], u.approval_pending)
where(query, [u], u.is_approved == false)
end

defp compose_query({:unconfirmed, _}, query) do


+ 1
- 1
lib/pleroma/web/admin_api/views/account_view.ex 查看文件

@@ -78,7 +78,7 @@ defmodule Pleroma.Web.AdminAPI.AccountView do
"roles" => User.roles(user),
"tags" => user.tags || [],
"confirmation_pending" => user.confirmation_pending,
"approval_pending" => user.approval_pending,
"is_approved" => user.is_approved,
"url" => user.uri || user.ap_id,
"registration_reason" => user.registration_reason,
"actor_type" => user.actor_type


+ 20
- 0
priv/repo/migrations/20201016205220_refactor_approval_pending_user_field.exs 查看文件

@@ -0,0 +1,20 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Repo.Migrations.RefactorApprovalPendingUserField do
use Ecto.Migration

def up do
# Flip the values before we change the meaning of the column
execute("UPDATE users SET approval_pending = NOT approval_pending;")
execute("ALTER TABLE users RENAME COLUMN approval_pending TO is_approved;")
execute("ALTER TABLE users ALTER COLUMN is_approved SET DEFAULT true;")
end

def down do
execute("UPDATE users SET is_approved = NOT is_approved;")
execute("ALTER TABLE users RENAME COLUMN is_approved TO approval_pending;")
execute("ALTER TABLE users ALTER COLUMN approval_pending SET DEFAULT false;")
end
end

+ 18
- 18
test/pleroma/user_test.exs 查看文件

@@ -694,7 +694,7 @@ defmodule Pleroma.UserTest do

{:ok, user} = Repo.insert(changeset)

assert user.approval_pending
refute user.is_approved
assert user.registration_reason == "I'm a cool guy :)"
end

@@ -1388,17 +1388,17 @@ defmodule Pleroma.UserTest do

describe "approve" do
test "approves a user" do
user = insert(:user, approval_pending: true)
assert true == user.approval_pending
user = insert(:user, is_approved: false)
refute user.is_approved
{:ok, user} = User.approve(user)
assert false == user.approval_pending
assert user.is_approved
end

test "approves a list of users" do
unapproved_users = [
insert(:user, approval_pending: true),
insert(:user, approval_pending: true),
insert(:user, approval_pending: true)
insert(:user, is_approved: false),
insert(:user, is_approved: false),
insert(:user, is_approved: false)
]

{:ok, users} = User.approve(unapproved_users)
@@ -1406,7 +1406,7 @@ defmodule Pleroma.UserTest do
assert Enum.count(users) == 3

Enum.each(users, fn user ->
assert false == user.approval_pending
assert user.is_approved
end)
end

@@ -1414,7 +1414,7 @@ defmodule Pleroma.UserTest do
clear_config([:welcome, :email, :enabled], true)
clear_config([:welcome, :email, :sender], "tester@test.me")

user = insert(:user, approval_pending: true)
user = insert(:user, is_approved: false)
welcome_user = insert(:user, email: "tester@test.me")
instance_name = Pleroma.Config.get([:instance, :name])

@@ -1432,7 +1432,7 @@ defmodule Pleroma.UserTest do
test "approving an approved user does not trigger post-register actions" do
clear_config([:welcome, :email, :enabled], true)

user = insert(:user, approval_pending: false)
user = insert(:user, is_approved: true)
User.approve(user)

ObanHelpers.perform_all()
@@ -1465,9 +1465,9 @@ defmodule Pleroma.UserTest do
end)
end

test "sends approval emails when `approval_pending: true`" do
test "sends approval emails when `is_approved: false`" do
admin = insert(:user, is_admin: true)
user = insert(:user, confirmation_pending: true, approval_pending: true)
user = insert(:user, confirmation_pending: true, is_approved: false)
User.confirm(user)

ObanHelpers.perform_all()
@@ -1494,7 +1494,7 @@ defmodule Pleroma.UserTest do
end

test "confirming a confirmed user does not trigger post-register actions" do
user = insert(:user, confirmation_pending: false, approval_pending: true)
user = insert(:user, confirmation_pending: false, is_approved: false)
User.confirm(user)

ObanHelpers.perform_all()
@@ -1591,7 +1591,7 @@ defmodule Pleroma.UserTest do
end

test "delete/1 when approval is pending deletes the user" do
user = insert(:user, approval_pending: true)
user = insert(:user, is_approved: false)

{:ok, job} = User.delete(user)
{:ok, _} = ObanHelpers.perform(job)
@@ -1618,7 +1618,7 @@ defmodule Pleroma.UserTest do
is_locked: true,
confirmation_pending: true,
password_reset_pending: true,
approval_pending: true,
is_approved: false,
registration_reason: "ahhhhh",
confirmation_token: "qqqq",
domain_blocks: ["lain.com"],
@@ -1660,7 +1660,7 @@ defmodule Pleroma.UserTest do
is_locked: false,
confirmation_pending: false,
password_reset_pending: false,
approval_pending: false,
is_approved: true,
registration_reason: nil,
confirmation_token: nil,
domain_blocks: [],
@@ -1755,10 +1755,10 @@ defmodule Pleroma.UserTest do
end

test "returns :approval_pending for unapproved user" do
user = insert(:user, local: true, approval_pending: true)
user = insert(:user, local: true, is_approved: false)
assert User.account_status(user) == :approval_pending

user = insert(:user, local: true, confirmation_pending: true, approval_pending: true)
user = insert(:user, local: true, confirmation_pending: true, is_approved: false)
assert User.account_status(user) == :approval_pending
end
end


+ 13
- 13
test/pleroma/web/admin_api/controllers/user_controller_test.exs 查看文件

@@ -429,7 +429,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
describe "GET /api/pleroma/admin/users" do
test "renders users array for the first page", %{conn: conn, admin: admin} do
user = insert(:user, local: false, tags: ["foo", "bar"])
user2 = insert(:user, approval_pending: true, registration_reason: "I'm a chill dude")
user2 = insert(:user, is_approved: false, registration_reason: "I'm a chill dude")

conn = get(conn, "/api/pleroma/admin/users?page=1")

@@ -444,7 +444,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
user2,
%{
"local" => true,
"approval_pending" => true,
"is_approved" => false,
"registration_reason" => "I'm a chill dude",
"actor_type" => "Person"
}
@@ -638,7 +638,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
sad_user = insert(:user, nickname: "sadboy", confirmation_pending: true)
old_user = insert(:user, nickname: "oldboy", confirmation_pending: true)

insert(:user, nickname: "happyboy", approval_pending: false)
insert(:user, nickname: "happyboy", is_approved: true)
insert(:user, confirmation_pending: false)

result =
@@ -650,7 +650,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
Enum.map([old_user, sad_user], fn user ->
user_response(user, %{
"confirmation_pending" => true,
"approval_pending" => false
"is_approved" => true
})
end)
|> Enum.sort_by(& &1["nickname"])
@@ -662,18 +662,18 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
user =
insert(:user,
nickname: "sadboy",
approval_pending: true,
is_approved: false,
registration_reason: "Plz let me in!"
)

insert(:user, nickname: "happyboy", approval_pending: false)
insert(:user, nickname: "happyboy", is_approved: true)

conn = get(conn, "/api/pleroma/admin/users?filters=need_approval")

users = [
user_response(
user,
%{"approval_pending" => true, "registration_reason" => "Plz let me in!"}
%{"is_approved" => false, "registration_reason" => "Plz let me in!"}
)
]

@@ -816,8 +816,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
end

test "`active` filters out users pending approval", %{token: token} do
insert(:user, approval_pending: true)
%{id: user_id} = insert(:user, approval_pending: false)
insert(:user, is_approved: false)
%{id: user_id} = insert(:user, is_approved: true)
%{id: admin_id} = token.user

conn =
@@ -913,8 +913,8 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
end

test "PATCH /api/pleroma/admin/users/approve", %{admin: admin, conn: conn} do
user_one = insert(:user, approval_pending: true)
user_two = insert(:user, approval_pending: true)
user_one = insert(:user, is_approved: false)
user_two = insert(:user, is_approved: false)

conn =
patch(
@@ -924,7 +924,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
)

response = json_response(conn, 200)
assert Enum.map(response["users"], & &1["approval_pending"]) == [false, false]
assert Enum.map(response["users"], & &1["is_approved"]) == [true, true]

log_entry = Repo.one(ModerationLog)

@@ -961,7 +961,7 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
"display_name" => HTML.strip_tags(user.name || user.nickname),
"confirmation_pending" => false,
"approval_pending" => false,
"is_approved" => true,
"url" => user.ap_id,
"registration_reason" => nil,
"actor_type" => "Person"


+ 1
- 1
test/pleroma/web/admin_api/search_test.exs 查看文件

@@ -182,7 +182,7 @@ defmodule Pleroma.Web.AdminAPI.SearchTest do
end

test "it returns unapproved user" do
unapproved = insert(:user, approval_pending: true)
unapproved = insert(:user, is_approved: false)
insert(:user)
insert(:user)



+ 2
- 2
test/pleroma/web/mastodon_api/controllers/account_controller_test.exs 查看文件

@@ -1028,7 +1028,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do

assert user
refute user.confirmation_pending
refute user.approval_pending
assert user.is_approved
end

test "registers but does not log in with :account_activation_required", %{conn: conn} do
@@ -1150,7 +1150,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do

user = Repo.get_by(User, email: "lain@example.org")

assert user.approval_pending
refute user.is_approved
assert user.registration_reason == "I'm a cool dude, bro"
end



+ 1
- 1
test/pleroma/web/o_auth/o_auth_controller_test.exs 查看文件

@@ -1041,7 +1041,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
user =
insert(:user,
password_hash: Pleroma.Password.Pbkdf2.hash_pwd_salt(password),
approval_pending: true
is_approved: false
)

refute Pleroma.User.account_status(user) == :active


+ 1
- 1
test/pleroma/web/twitter_api/twitter_api_test.exs 查看文件

@@ -97,7 +97,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
{:ok, user} = TwitterAPI.register_user(data)
ObanHelpers.perform_all()

assert user.approval_pending
refute user.is_approved

user_email = Pleroma.Emails.UserEmail.approval_pending_email(user)
admin_email = Pleroma.Emails.AdminEmail.new_unapproved_registration(admin, user)


正在加载...
取消
保存