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:
commit
d48755791d
12 changed files with 30 additions and 10 deletions
|
@ -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()
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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()
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
[
|
||||
|
|
|
@ -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], []},
|
||||
|
|
|
@ -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
|
10
priv/repo/migrations/20200901061637_bio_set_not_null.exs
Normal file
10
priv/repo/migrations/20200901061637_bio_set_not_null.exs
Normal 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
|
|
@ -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,
|
||||
|
|
|
@ -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(:_))
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue