aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/admin_api/admin_api_controller.ex
blob: 70c1caaecd2bd6b7f2e7564ed9f9096daa9b05d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
defmodule Pleroma.Web.AdminAPI.AdminAPIController do
  use Pleroma.Web, :controller
  alias Pleroma.{User, Repo}
  alias Pleroma.Web.ActivityPub.Relay

  require Logger

  action_fallback(:errors)

  def user_delete(conn, %{"nickname" => nickname}) do
    user = User.get_by_nickname(nickname)

    if user[:local] == true do
      User.delete(user)
    else
      User.delete(user)
    end

    conn
    |> send(200)
  end

  def user_create(
        conn,
        %{user: %{"nickname" => nickname, "email" => email, "password" => password} = user}
      ) do
    new_user = %User{
      nickname: nickname,
      name: user.name || nickname,
      email: email,
      password: password,
      password_confirmation: password,
      bio: user.bio || "."
    }

    User.register_changeset(%User{}, new_user)

    Repo.insert!(user)

    conn
    |> send(200)
  end

  def relay_follow(conn, %{"relay_url" => target}) do
    :ok = Relay.follow(target)

    conn
    |> send(200)
  end

  def relay_unfollow(conn, %{"relay_url" => target}) do
    :ok = Relay.unfollow(target)

    conn
    |> send(200)
  end

  @shortdoc "Get a account registeration invite token (base64 string)"
  def get_invite_token(conn, _params) do
    {:ok, token} <- Pleroma.UserInviteToken.create_token()

    conn
    |> json(token.token)
  end

  @shortdoc "Get a password reset token (base64 string) for given nickname"
  def get_password_reset(conn, %{"nickname" => nickname}) do
    (%User{local: true} = user) = User.get_by_nickname(nickname)
    {:ok, token} = Pleroma.PasswordResetToken.create_token(user)

    conn
    |> json(token.token)
  end

  def errors(conn, {:param_cast, _}) do
    conn
    |> put_status(400)
    |> json("Invalid parameters")
  end

  def errors(conn, _) do
    conn
    |> put_status(500)
    |> json("Something went wrong")
  end
end