alias Pleroma.Web.OAuth.Authorization
alias Pleroma.Web.OAuth.Token
+ import Pleroma.Web.ControllerHelper, only: [oauth_scopes: 2]
import Ecto.Query
+
require Logger
@httpoison Application.get_env(:pleroma, :httpoison)
action_fallback(:errors)
def create_app(conn, params) do
- with cs <- App.register_changeset(%App{}, params),
+ scopes = oauth_scopes(params, ["read"])
+
+ app_attrs =
+ params
+ |> Map.drop(["scope", "scopes"])
+ |> Map.put("scopes", scopes)
+
+ with cs <- App.register_changeset(%App{}, app_attrs),
false <- cs.changes[:client_name] == @local_mastodon_name,
{:ok, app} <- Repo.insert(cs) do
res = %{
response_type: "code",
client_id: app.client_id,
redirect_uri: ".",
- scope: app.scopes
+ scope: Enum.join(app.scopes, " ")
)
conn
{:ok, app}
else
_e ->
- cs = App.register_changeset(%App{}, Map.put(find_attrs, :scopes, "read,write,follow"))
+ cs =
+ App.register_changeset(
+ %App{},
+ Map.put(find_attrs, :scopes, ["read", "write", "follow"])
+ )
Repo.insert(cs)
end