mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-27 13:47:58 +01:00
ensure the authenticated user is never persisted as a further safeguard against API CSRF
This commit is contained in:
parent
cff7b9386f
commit
18798d2e99
1 changed files with 4 additions and 11 deletions
|
@ -1,30 +1,23 @@
|
|||
defmodule PhilomenaWeb.ApiTokenPlug do
|
||||
|
||||
alias Philomena.Users.User
|
||||
alias Philomena.Repo
|
||||
alias Philomena.Users
|
||||
alias Pow.Plug
|
||||
import Ecto.Query
|
||||
|
||||
def init([]), do: []
|
||||
|
||||
def call(conn, _opts) do
|
||||
conn
|
||||
|> maybe_find_user(conn.params["key"])
|
||||
|> maybe_assign_user()
|
||||
|> assign_user()
|
||||
end
|
||||
|
||||
defp maybe_find_user(conn, nil), do: {conn, nil}
|
||||
defp maybe_find_user(conn, key) do
|
||||
user =
|
||||
User
|
||||
|> where(authentication_token: ^key)
|
||||
|> Repo.one()
|
||||
user = Users.get_by(authentication_token: key)
|
||||
|
||||
{conn, user}
|
||||
end
|
||||
|
||||
defp maybe_assign_user({conn, nil}), do: conn
|
||||
defp maybe_assign_user({conn, user}) do
|
||||
defp assign_user({conn, user}) do
|
||||
config = Plug.fetch_config(conn)
|
||||
|
||||
Plug.assign_current_user(conn, user, config)
|
||||
|
|
Loading…
Reference in a new issue