Add SetUserSessionIdPlug.
This commit is contained in:
parent
636ad3e155
commit
5ce1ebb179
15
lib/pleroma/plugs/set_user_session_id_plug.ex
Normal file
15
lib/pleroma/plugs/set_user_session_id_plug.ex
Normal file
|
@ -0,0 +1,15 @@
|
|||
defmodule Pleroma.Plugs.SetUserSessionIdPlug do
|
||||
import Plug.Conn
|
||||
alias Pleroma.User
|
||||
|
||||
def init(opts) do
|
||||
opts
|
||||
end
|
||||
|
||||
def call(%{assigns: %{user: %User{id: id}}} = conn, _) do
|
||||
conn
|
||||
|> put_session(:user_id, id)
|
||||
end
|
||||
|
||||
def call(conn, _), do: conn
|
||||
end
|
39
test/plugs/set_user_session_id_plug_test.exs
Normal file
39
test/plugs/set_user_session_id_plug_test.exs
Normal file
|
@ -0,0 +1,39 @@
|
|||
defmodule Pleroma.Plugs.SetUserSessionIdPlugTest do
|
||||
use Pleroma.Web.ConnCase, async: true
|
||||
|
||||
alias Pleroma.Plugs.SetUserSessionIdPlug
|
||||
alias Pleroma.User
|
||||
|
||||
setup %{conn: conn} do
|
||||
session_opts = [
|
||||
store: :cookie,
|
||||
key: "_test",
|
||||
signing_salt: "cooldude"
|
||||
]
|
||||
|
||||
conn =
|
||||
conn
|
||||
|> Plug.Session.call(Plug.Session.init(session_opts))
|
||||
|> fetch_session
|
||||
|
||||
%{conn: conn}
|
||||
end
|
||||
|
||||
test "doesn't do anything if the user isn't set", %{conn: conn} do
|
||||
ret_conn =
|
||||
conn
|
||||
|> SetUserSessionIdPlug.call(%{})
|
||||
|
||||
assert ret_conn == conn
|
||||
end
|
||||
|
||||
test "sets the user_id in the session to the user id of the user assign", %{conn: conn} do
|
||||
conn =
|
||||
conn
|
||||
|> assign(:user, %User{id: 1})
|
||||
|> SetUserSessionIdPlug.call(%{})
|
||||
|
||||
id = get_session(conn, :user_id)
|
||||
assert id == 1
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue