diff options
author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2019-05-13 18:35:45 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2019-05-13 18:35:45 +0000 |
commit | a2be420f940fb8f181feeb9b0fb9759d433dcae1 (patch) | |
tree | 523d1f1cfa399f4ee6d841ba3098ecd87d8e67e7 /lib/pleroma/web/oauth/token.ex | |
parent | 5a4d55cf910f85b07f111972647a8b4410b5eb6b (diff) | |
download | pleroma-a2be420f940fb8f181feeb9b0fb9759d433dcae1.tar.gz |
differences_in_mastoapi_responses.md: fullname & bio are optionnal
[ci skip]
Diffstat (limited to 'lib/pleroma/web/oauth/token.ex')
-rw-r--r-- | lib/pleroma/web/oauth/token.ex | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/oauth/token.ex index 4e5d1d118..ef047d565 100644 --- a/lib/pleroma/web/oauth/token.ex +++ b/lib/pleroma/web/oauth/token.ex @@ -45,12 +45,16 @@ defmodule Pleroma.Web.OAuth.Token do |> Repo.find_resource() end + @spec exchange_token(App.t(), Authorization.t()) :: + {:ok, Token.t()} | {:error, Changeset.t()} def exchange_token(app, auth) do with {:ok, auth} <- Authorization.use_token(auth), true <- auth.app_id == app.id do + user = if auth.user_id, do: User.get_cached_by_id(auth.user_id), else: %User{} + create_token( app, - User.get_cached_by_id(auth.user_id), + user, %{scopes: auth.scopes} ) end @@ -81,12 +85,13 @@ defmodule Pleroma.Web.OAuth.Token do |> validate_required([:valid_until]) end + @spec create_token(App.t(), User.t(), map()) :: {:ok, Token} | {:error, Changeset.t()} def create_token(%App{} = app, %User{} = user, attrs \\ %{}) do %__MODULE__{user_id: user.id, app_id: app.id} |> cast(%{scopes: attrs[:scopes] || app.scopes}, [:scopes]) - |> validate_required([:scopes, :user_id, :app_id]) + |> validate_required([:scopes, :app_id]) |> put_valid_until(attrs) - |> put_token + |> put_token() |> put_refresh_token(attrs) |> Repo.insert() end |