summaryrefslogtreecommitdiff
path: root/lib/mix/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mix/tasks')
-rw-r--r--lib/mix/tasks/generate_config.ex6
-rw-r--r--lib/mix/tasks/make_moderator.ex15
-rw-r--r--lib/mix/tasks/sample_config.eex12
-rw-r--r--lib/mix/tasks/set_admin.ex18
-rw-r--r--lib/mix/tasks/set_locked.ex17
5 files changed, 41 insertions, 27 deletions
diff --git a/lib/mix/tasks/generate_config.ex b/lib/mix/tasks/generate_config.ex
index e3cbbf131..be085d187 100644
--- a/lib/mix/tasks/generate_config.ex
+++ b/lib/mix/tasks/generate_config.ex
@@ -22,6 +22,8 @@ defmodule Mix.Tasks.GenerateConfig do
resultSql = EEx.eval_file("lib/mix/tasks/sample_psql.eex", dbpass: dbpass)
+ {web_push_public_key, web_push_private_key} = :crypto.generate_key(:ecdh, :prime256v1)
+
result =
EEx.eval_file(
"lib/mix/tasks/sample_config.eex",
@@ -29,7 +31,9 @@ defmodule Mix.Tasks.GenerateConfig do
email: email,
name: name,
secret: secret,
- dbpass: dbpass
+ dbpass: dbpass,
+ web_push_public_key: Base.url_encode64(web_push_public_key, padding: false),
+ web_push_private_key: Base.url_encode64(web_push_private_key, padding: false)
)
IO.puts(
diff --git a/lib/mix/tasks/make_moderator.ex b/lib/mix/tasks/make_moderator.ex
index 15586dc30..8dc0a04dd 100644
--- a/lib/mix/tasks/make_moderator.ex
+++ b/lib/mix/tasks/make_moderator.ex
@@ -8,7 +8,7 @@ defmodule Mix.Tasks.SetModerator do
"""
use Mix.Task
- import Mix.Ecto
+ import Ecto.Changeset
alias Pleroma.{Repo, User}
def run([nickname | rest]) do
@@ -21,14 +21,15 @@ defmodule Mix.Tasks.SetModerator do
end
with %User{local: true} = user <- User.get_by_nickname(nickname) do
- info =
- user.info
- |> Map.put("is_moderator", !!moderator)
+ info_cng = User.Info.admin_api_update(user.info, %{is_moderator: !!moderator})
- cng = User.info_changeset(user, %{info: info})
- {:ok, user} = User.update_and_set_cache(cng)
+ user_cng =
+ Ecto.Changeset.change(user)
+ |> put_embed(:info, info_cng)
- IO.puts("Moderator status of #{nickname}: #{user.info["is_moderator"]}")
+ {:ok, user} = User.update_and_set_cache(user_cng)
+
+ IO.puts("Moderator status of #{nickname}: #{user.info.is_moderator}")
else
_ ->
IO.puts("No local user #{nickname}")
diff --git a/lib/mix/tasks/sample_config.eex b/lib/mix/tasks/sample_config.eex
index 462c34636..47b6be729 100644
--- a/lib/mix/tasks/sample_config.eex
+++ b/lib/mix/tasks/sample_config.eex
@@ -25,6 +25,12 @@ config :pleroma, Pleroma.Repo,
hostname: "localhost",
pool_size: 10
+# Configure web push notifications
+config :web_push_encryption, :vapid_details,
+ subject: "mailto:<%= email %>",
+ public_key: "<%= web_push_public_key %>",
+ private_key: "<%= web_push_private_key %>"
+
# Enable Strict-Transport-Security once SSL is working:
# config :pleroma, :http_security,
# sts: true
@@ -50,9 +56,9 @@ config :pleroma, Pleroma.Repo,
# Configure Openstack Swift support if desired.
-#
-# Many openstack deployments are different, so config is left very open with
-# no assumptions made on which provider you're using. This should allow very
+#
+# Many openstack deployments are different, so config is left very open with
+# no assumptions made on which provider you're using. This should allow very
# wide support without needing separate handlers for OVH, Rackspace, etc.
#
# config :pleroma, Pleroma.Uploaders.Swift,
diff --git a/lib/mix/tasks/set_admin.ex b/lib/mix/tasks/set_admin.ex
index d5ccf261b..ac26516f1 100644
--- a/lib/mix/tasks/set_admin.ex
+++ b/lib/mix/tasks/set_admin.ex
@@ -1,5 +1,6 @@
defmodule Mix.Tasks.SetAdmin do
use Mix.Task
+ import Ecto.Changeset
alias Pleroma.User
@doc """
@@ -9,21 +10,22 @@ defmodule Mix.Tasks.SetAdmin do
def run([nickname | rest]) do
Application.ensure_all_started(:pleroma)
- status =
+ admin =
case rest do
- [status] -> status == "true"
+ [admin] -> admin == "true"
_ -> true
end
with %User{local: true} = user <- User.get_by_nickname(nickname) do
- info =
- user.info
- |> Map.put("is_admin", !!status)
+ info_cng = User.Info.admin_api_update(user.info, %{is_admin: !!admin})
- cng = User.info_changeset(user, %{info: info})
- {:ok, user} = User.update_and_set_cache(cng)
+ user_cng =
+ Ecto.Changeset.change(user)
+ |> put_embed(:info, info_cng)
- IO.puts("Admin status of #{nickname}: #{user.info["is_admin"]}")
+ {:ok, user} = User.update_and_set_cache(user_cng)
+
+ IO.puts("Admin status of #{nickname}: #{user.info.is_admin}")
else
_ ->
IO.puts("No local user #{nickname}")
diff --git a/lib/mix/tasks/set_locked.ex b/lib/mix/tasks/set_locked.ex
index a154595ca..e93a63505 100644
--- a/lib/mix/tasks/set_locked.ex
+++ b/lib/mix/tasks/set_locked.ex
@@ -10,11 +10,11 @@ defmodule Mix.Tasks.SetLocked do
"""
use Mix.Task
- import Mix.Ecto
+ import Ecto.Changeset
alias Pleroma.{Repo, User}
def run([nickname | rest]) do
- ensure_started(Repo, [])
+ Application.ensure_all_started(:pleroma)
locked =
case rest do
@@ -23,14 +23,15 @@ defmodule Mix.Tasks.SetLocked do
end
with %User{local: true} = user <- User.get_by_nickname(nickname) do
- info =
- user.info
- |> Map.put("locked", !!locked)
+ info_cng = User.Info.profile_update(user.info, %{locked: !!locked})
- cng = User.info_changeset(user, %{info: info})
- user = Repo.update!(cng)
+ user_cng =
+ Ecto.Changeset.change(user)
+ |> put_embed(:info, info_cng)
- IO.puts("locked status of #{nickname}: #{user.info["locked"]}")
+ {:ok, user} = User.update_and_set_cache(user_cng)
+
+ IO.puts("Locked status of #{nickname}: #{user.info.locked}")
else
_ ->
IO.puts("No local user #{nickname}")