aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2018-11-18 19:33:43 +0100
committerlain <lain@soykaf.club>2018-11-18 19:33:43 +0100
commite7cd6e97394a80ed3ef794e801183cc0635f8a15 (patch)
treedc3b26eccfb18e678c12d77abe09fd40bfebffaa /lib
parentfc3bcf335e2c5ba1f8b1b25c1a4869cefff2a431 (diff)
downloadpleroma-e7cd6e97394a80ed3ef794e801183cc0635f8a15.tar.gz
Fix setting of keys.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user/info.ex10
-rw-r--r--lib/pleroma/web/web_finger/web_finger.ex14
2 files changed, 18 insertions, 6 deletions
diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex
index 619e58b16..39a1291dd 100644
--- a/lib/pleroma/user/info.ex
+++ b/lib/pleroma/user/info.ex
@@ -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
diff --git a/lib/pleroma/web/web_finger/web_finger.ex b/lib/pleroma/web/web_finger/web_finger.ex
index 9f554d286..18cdc057e 100644
--- a/lib/pleroma/web/web_finger/web_finger.ex
+++ b/lib/pleroma/web/web_finger/web_finger.ex
@@ -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