Fix setting of keys.
authorlain <lain@soykaf.club>
Sun, 18 Nov 2018 18:33:43 +0000 (19:33 +0100)
committerlain <lain@soykaf.club>
Sun, 18 Nov 2018 18:33:43 +0000 (19:33 +0100)
lib/pleroma/user/info.ex
lib/pleroma/web/web_finger/web_finger.ex

index 619e58b163ef27391b18c4a90cde61e16b50958a..39a1291dd01096de089097c66c2abe73393503a9 100644 (file)
@@ -15,7 +15,7 @@ defmodule Pleroma.User.Info do
     field(:no_rich_text, :boolean, default: false)
     field(:ap_enabled, :boolean, default: false)
     field(:is_moderator, :boolean, default: false)
-    field(:keys, :map, default: %{})
+    field(:keys, :string, default: nil)
   end
 
   def set_activation_status(info, deactivated) do
@@ -61,4 +61,12 @@ defmodule Pleroma.User.Info do
   def remove_from_block(info, blocked) do
     set_blocks(info, List.delete(info.blocks, blocked))
   end
+
+  def set_keys(info, keys) do
+    params = %{keys: keys}
+
+    info
+    |> cast(params, [:keys])
+    |> validate_required([:keys])
+  end
 end
index 9f554d286daf6da1879baf811f8381345e74cdb3..18cdc057e2ffca671818079c3694352881baf2a3 100644 (file)
@@ -113,16 +113,20 @@ defmodule Pleroma.Web.WebFinger do
 
   # This seems a better fit in Salmon
   def ensure_keys_present(user) do
-    info = user.info || %{}
+    info = user.info
 
-    if info["keys"] do
+    if info.keys do
       {:ok, user}
     else
       {:ok, pem} = Salmon.generate_rsa_pem()
-      info = Map.put(info, "keys", pem)
 
-      Ecto.Changeset.change(user, info: info)
-      |> User.update_and_set_cache()
+      info_cng = info
+      |> Pleroma.User.Info.set_keys(pem)
+
+      cng = Ecto.Changeset.change(user)
+      |> Ecto.Changeset.put_embed(:info, info_cng)
+
+      User.update_and_set_cache(cng)
     end
   end