Merge branch 'fix/static-fe-nil-bio-crash' into 'develop'

User table: ensure bio is always a string

Closes #2067

See merge request pleroma/pleroma!2938
This commit is contained in:
lain 2020-09-01 09:32:01 +00:00
commit d48755791d
12 changed files with 30 additions and 10 deletions

View file

@ -39,6 +39,9 @@ def start(_type, _args) do
# every time the application is restarted, so we disable module
# conflicts at runtime
Code.compiler_options(ignore_module_conflict: true)
# Disable warnings_as_errors at runtime, it breaks Phoenix live reload
# due to protocol consolidation warnings
Code.compiler_options(warnings_as_errors: false)
Pleroma.Telemetry.Logger.attach()
Config.Holder.save_default()
Pleroma.HTML.compile_scrubbers()

View file

@ -83,7 +83,7 @@ defmodule Pleroma.User do
]
schema "users" do
field(:bio, :string)
field(:bio, :string, default: "")
field(:raw_bio, :string)
field(:email, :string)
field(:name, :string)
@ -1587,7 +1587,7 @@ def purge_user_changeset(user) do
# "Right to be forgotten"
# https://gdpr.eu/right-to-be-forgotten/
change(user, %{
bio: nil,
bio: "",
raw_bio: nil,
email: nil,
name: nil,

View file

@ -1224,7 +1224,7 @@ defp object_to_user_data(data) do
name: data["name"],
follower_address: data["followers"],
following_address: data["following"],
bio: data["summary"],
bio: data["summary"] || "",
actor_type: actor_type,
also_known_as: Map.get(data, "alsoKnownAs", []),
public_key: public_key,

View file

@ -68,7 +68,7 @@ def create_from_registration(
nickname = value([registration_attrs["nickname"], Registration.nickname(registration)])
email = value([registration_attrs["email"], Registration.email(registration)])
name = value([registration_attrs["name"], Registration.name(registration)]) || nickname
bio = value([registration_attrs["bio"], Registration.description(registration)])
bio = value([registration_attrs["bio"], Registration.description(registration)]) || ""
random_password = :crypto.strong_rand_bytes(64) |> Base.encode64()

View file

@ -245,7 +245,7 @@ defp do_render("show.json", %{user: user} = opts) do
followers_count: followers_count,
following_count: following_count,
statuses_count: user.note_count,
note: user.bio || "",
note: user.bio,
url: user.uri || user.ap_id,
avatar: image,
avatar_static: image,

View file

@ -61,7 +61,7 @@ def build_tags(%{
@impl Provider
def build_tags(%{user: user}) do
with truncated_bio = Utils.scrub_html_and_truncate(user.bio || "") do
with truncated_bio = Utils.scrub_html_and_truncate(user.bio) do
[
{:meta,
[

View file

@ -40,7 +40,7 @@ def build_tags(%{activity_id: id, object: object, user: user}) do
@impl Provider
def build_tags(%{user: user}) do
with truncated_bio = Utils.scrub_html_and_truncate(user.bio || "") do
with truncated_bio = Utils.scrub_html_and_truncate(user.bio) do
[
title_tag(user),
{:meta, [property: "twitter:description", content: truncated_bio], []},

View file

@ -0,0 +1,7 @@
defmodule Pleroma.Repo.Migrations.EnsureBioIsString do
use Ecto.Migration
def change do
execute("update users set bio = '' where bio is null", "")
end
end

View file

@ -0,0 +1,10 @@
defmodule Pleroma.Repo.Migrations.BioSetNotNull do
use Ecto.Migration
def change do
execute(
"alter table users alter column bio set not null",
"alter table users alter column bio drop not null"
)
end
end

View file

@ -1466,7 +1466,7 @@ test "delete/1 purges a user when they wouldn't be fully deleted" do
user = User.get_by_id(user.id)
assert %User{
bio: nil,
bio: "",
raw_bio: nil,
email: nil,
name: nil,

View file

@ -203,7 +203,7 @@ test "single user", %{admin: admin, conn: conn} do
assert user.note_count == 0
assert user.follower_count == 0
assert user.following_count == 0
assert user.bio == nil
assert user.bio == ""
assert user.name == nil
assert called(Pleroma.Web.Federator.publish(:_))

View file

@ -594,7 +594,7 @@ test "with proper permissions and valid password", %{conn: conn, user: user} do
user = User.get_by_id(user.id)
assert user.deactivated == true
assert user.name == nil
assert user.bio == nil
assert user.bio == ""
assert user.password_hash == nil
end
end