diff options
author | tusooa <tusooa@kazv.moe> | 2022-08-24 15:23:20 +0000 |
---|---|---|
committer | tusooa <tusooa@kazv.moe> | 2022-08-24 15:23:20 +0000 |
commit | 85c1e1ff4dafa6cd396ded55e3484ad059a71576 (patch) | |
tree | 5325a5bf2e9fc9f300c96b1fefa0b6543561919f | |
parent | 38d9ec41beb4a6161384fe07b65bf9244ace173f (diff) | |
parent | 439c1baf25b19723bcbaac78b10d00181074e3b6 (diff) | |
download | pleroma-85c1e1ff4dafa6cd396ded55e3484ad059a71576.tar.gz |
Merge branch 'fix/oauth-token-user-caching' into 'develop'
OAuthPlug: use user cache instead of joining
See merge request pleroma/pleroma!3734
-rw-r--r-- | lib/pleroma/web/plugs/o_auth_plug.ex | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/pleroma/web/plugs/o_auth_plug.ex b/lib/pleroma/web/plugs/o_auth_plug.ex index 0f74d626b..ba04ddb72 100644 --- a/lib/pleroma/web/plugs/o_auth_plug.ex +++ b/lib/pleroma/web/plugs/o_auth_plug.ex @@ -47,15 +47,17 @@ defmodule Pleroma.Web.Plugs.OAuthPlug do # @spec fetch_user_and_token(String.t()) :: {:ok, User.t(), Token.t()} | nil defp fetch_user_and_token(token) do - query = + token_query = from(t in Token, - where: t.token == ^token, - join: user in assoc(t, :user), - preload: [user: user] + where: t.token == ^token ) - with %Token{user: user} = token_record <- Repo.one(query) do + with %Token{user_id: user_id} = token_record <- Repo.one(token_query), + false <- is_nil(user_id), + %User{} = user <- User.get_cached_by_id(user_id) do {:ok, user, token_record} + else + _ -> nil end end |