Merge remote-tracking branch 'pleroma/develop' into feature/addressable-lists
[akkoma] / lib / pleroma / web / oauth / token / strategy / revoke.ex
1 defmodule Pleroma.Web.OAuth.Token.Strategy.Revoke do
2 @moduledoc """
3 Functions for dealing with revocation.
4 """
5
6 alias Pleroma.Repo
7 alias Pleroma.Web.OAuth.App
8 alias Pleroma.Web.OAuth.Token
9
10 @doc "Finds and revokes access token for app and by token"
11 @spec revoke(App.t(), map()) :: {:ok, Token.t()} | {:error, :not_found | Ecto.Changeset.t()}
12 def revoke(%App{} = app, %{"token" => token} = _attrs) do
13 with {:ok, token} <- Token.get_by_token(app, token),
14 do: revoke(token)
15 end
16
17 @doc "Revokes access token"
18 @spec revoke(Token.t()) :: {:ok, Token.t()} | {:error, Ecto.Changeset.t()}
19 def revoke(%Token{} = token) do
20 Repo.delete(token)
21 end
22 end