logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

o_auth_app_controller.ex (2020B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.AdminAPI.OAuthAppController do
  5. use Pleroma.Web, :controller
  6. import Pleroma.Web.ControllerHelper, only: [json_response: 3]
  7. alias Pleroma.Web.OAuth.App
  8. alias Pleroma.Web.Plugs.OAuthScopesPlug
  9. require Logger
  10. plug(Pleroma.Web.ApiSpec.CastAndValidate)
  11. plug(
  12. OAuthScopesPlug,
  13. %{scopes: ["admin:write"]}
  14. when action in [:create, :index, :update, :delete]
  15. )
  16. action_fallback(Pleroma.Web.AdminAPI.FallbackController)
  17. defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.OAuthAppOperation
  18. def index(conn, params) do
  19. search_params =
  20. params
  21. |> Map.take([:client_id, :page, :page_size, :trusted])
  22. |> Map.put(:client_name, params[:name])
  23. with {:ok, apps, count} <- App.search(search_params) do
  24. render(conn, "index.json",
  25. apps: apps,
  26. count: count,
  27. page_size: params.page_size,
  28. admin: true
  29. )
  30. end
  31. end
  32. def create(%{body_params: params} = conn, _) do
  33. params = Pleroma.Maps.put_if_present(params, :client_name, params[:name])
  34. case App.create(params) do
  35. {:ok, app} ->
  36. render(conn, "show.json", app: app, admin: true)
  37. {:error, changeset} ->
  38. json(conn, App.errors(changeset))
  39. end
  40. end
  41. def update(%{body_params: params} = conn, %{id: id}) do
  42. params = Pleroma.Maps.put_if_present(params, :client_name, params[:name])
  43. with {:ok, app} <- App.update(id, params) do
  44. render(conn, "show.json", app: app, admin: true)
  45. else
  46. {:error, changeset} ->
  47. json(conn, App.errors(changeset))
  48. nil ->
  49. json_response(conn, :bad_request, "")
  50. end
  51. end
  52. def delete(conn, params) do
  53. with {:ok, _app} <- App.destroy(params.id) do
  54. json_response(conn, :no_content, "")
  55. else
  56. _ -> json_response(conn, :bad_request, "")
  57. end
  58. end
  59. end