diff options
author | lain <lain@soykaf.club> | 2019-05-17 12:26:59 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2019-05-17 12:26:59 +0200 |
commit | 412a3d8a0f74ee3a46f9ba98d906c65c6c1c4da8 (patch) | |
tree | d7dc5c61e4b3a01b21e33ccbea3aa4bfffc051aa /lib/pleroma/web/oauth/token.ex | |
parent | f1e67bdc312ba16a37916024244d6cb9d4417c9e (diff) | |
parent | e5b34f5e0544371603bc2b570c26ede3182c2f8b (diff) | |
download | pleroma-412a3d8a0f74ee3a46f9ba98d906c65c6c1c4da8.tar.gz |
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into rum-index
Diffstat (limited to 'lib/pleroma/web/oauth/token.ex')
-rw-r--r-- | lib/pleroma/web/oauth/token.ex | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/oauth/token.ex index 4e5d1d118..66c95c2e9 100644 --- a/lib/pleroma/web/oauth/token.ex +++ b/lib/pleroma/web/oauth/token.ex @@ -22,7 +22,7 @@ defmodule Pleroma.Web.OAuth.Token do field(:refresh_token, :string) field(:scopes, {:array, :string}, default: []) field(:valid_until, :naive_datetime_usec) - belongs_to(:user, Pleroma.User, type: Pleroma.FlakeId) + belongs_to(:user, User, type: Pleroma.FlakeId) belongs_to(:app, App) timestamps() @@ -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 |