user: remote actors can have no nickname if they are virtual services

This commit is contained in:
William Pitcock 2018-08-06 06:50:18 +00:00
parent 7bed350a23
commit 1c90f88393
2 changed files with 9 additions and 2 deletions

View file

@ -77,7 +77,7 @@ defmodule Pleroma.User do
changes = changes =
%User{} %User{}
|> cast(params, [:bio, :name, :ap_id, :nickname, :info, :avatar]) |> cast(params, [:bio, :name, :ap_id, :nickname, :info, :avatar])
|> validate_required([:name, :ap_id, :nickname]) |> validate_required([:name, :ap_id])
|> unique_constraint(:nickname) |> unique_constraint(:nickname)
|> validate_format(:nickname, @email_regex) |> validate_format(:nickname, @email_regex)
|> validate_length(:bio, max: 5000) |> validate_length(:bio, max: 5000)

View file

@ -554,12 +554,19 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
"locked" => locked "locked" => locked
}, },
avatar: avatar, avatar: avatar,
nickname: "#{data["preferredUsername"]}@#{URI.parse(data["id"]).host}",
name: data["name"], name: data["name"],
follower_address: data["followers"], follower_address: data["followers"],
bio: data["summary"] bio: data["summary"]
} }
# nickname can be nil because of virtual actors
user_data =
if data["preferredUsername"] do
Map.put(user_data, :nickname, "#{data["preferredUsername"]}@#{URI.parse(data["id"]).host}")
else
Map.put(user_data, :nickname, nil)
end
{:ok, user_data} {:ok, user_data}
end end