User: Don't allow local users in remote changesets

This commit is contained in:
lain 2020-12-02 12:18:43 +01:00
parent c10783087f
commit a32e13e6c4
2 changed files with 20 additions and 0 deletions

View File

@ -461,7 +461,20 @@ def remote_user_changeset(struct \\ %User{local: false}, params) do
|> validate_format(:nickname, @email_regex) |> validate_format(:nickname, @email_regex)
|> validate_length(:bio, max: bio_limit) |> validate_length(:bio, max: bio_limit)
|> validate_length(:name, max: name_limit) |> validate_length(:name, max: name_limit)
|> validate_inclusion(:local, [true])
|> validate_fields(true) |> validate_fields(true)
|> validate_non_local()
end
defp validate_non_local(cng) do
local? = get_field(cng, :local)
if local? do
cng
|> add_error(:local, "User is local, can't update with this changeset.")
else
cng
end
end end
def update_changeset(struct, params \\ %{}) do def update_changeset(struct, params \\ %{}) do

View File

@ -877,6 +877,13 @@ test "it has required fields" do
refute cs.valid? refute cs.valid?
end) end)
end end
test "it is invalid given a local user" do
user = insert(:user)
cs = User.remote_user_changeset(user, %{name: "tom from myspace"})
refute cs.valid?
end
end end
describe "followers and friends" do describe "followers and friends" do