Changeset View
Changeset View
Standalone View
Standalone View
web/controllers/plugs/set_user.ex
defmodule KolabChat.Plugs.SetUser do | defmodule KolabChat.Plugs.SetUser do | ||||
import Plug.Conn | import Plug.Conn | ||||
alias KolabChat.Repo | alias KolabChat.Repo | ||||
alias KolabChat.User | alias KolabChat.User | ||||
def init(params), do: params | def init(params), do: params | ||||
# token authentication | |||||
def call(%{"params": %{"token" => token}} = conn, _params) do | |||||
case Phoenix.Token.verify(conn, "user", token, max_age: 86400) do | |||||
{:ok, user_id} -> | |||||
assign(conn, :user, Repo.get!(User, user_id)) | |||||
_ -> | |||||
assign(conn, :user, nil) | |||||
end | |||||
end | |||||
# session authentication | |||||
def call(conn, _params) do | def call(conn, _params) do | ||||
user_id = get_session(conn, :user_id) | user_id = get_session(conn, :user_id) | ||||
cond do | cond do | ||||
user = user_id && Repo.get(User, user_id) -> | user = user_id && Repo.get(User, user_id) -> | ||||
assign(conn, :user, user) | assign(conn, :user, user) | ||||
true -> | true -> | ||||
assign(conn, :user, nil) | assign(conn, :user, nil) | ||||
end | end | ||||
end | end | ||||
end | end |