Merge branch 'backport/remove-direct-messages-from-public-timeline' into 'maint/1.1'
[akkoma] / lib / pleroma / user.ex
index 2eba1f288400f425802957ad5b85306cd1044f96..617f160e0e547159237ff64bdb84e59368c64add 100644 (file)
@@ -48,6 +48,7 @@ defmodule Pleroma.User do
     field(:password_hash, :string)
     field(:password, :string, virtual: true)
     field(:password_confirmation, :string, virtual: true)
+    field(:keys, :string)
     field(:following, {:array, :string}, default: [])
     field(:ap_id, :string)
     field(:avatar, :map)
@@ -1590,15 +1591,13 @@ defmodule Pleroma.User do
     }
   end
 
-  def ensure_keys_present(%User{info: info} = user) do
-    if info.keys do
-      {:ok, user}
-    else
-      {:ok, pem} = Keys.generate_rsa_pem()
+  def ensure_keys_present(%{keys: keys} = user) when not is_nil(keys), do: {:ok, user}
 
+  def ensure_keys_present(%User{} = user) do
+    with {:ok, pem} <- Keys.generate_rsa_pem() do
       user
-      |> Ecto.Changeset.change()
-      |> Ecto.Changeset.put_embed(:info, User.Info.set_keys(info, pem))
+      |> cast(%{keys: pem}, [:keys])
+      |> validate_required([:keys])
       |> update_and_set_cache()
     end
   end