Packages

Easy to install Auth system with social integration just in 6 steps on Elixir Phoenix

Current section

Files

Jump to
plug_mishka_auth lib system plug logined_current_user_plug.ex
Raw

lib/system/plug/logined_current_user_plug.ex

defmodule MishkaAuth.Plug.LoginedCurrentUserPlug do
import Plug.Conn
alias MishkaAuth.Helper.PhoenixConverter
def init(default), do: default
@spec call(Plug.Conn.t(), any) :: Plug.Conn.t()
def call(conn, default) do
PhoenixConverter.get_session_with_key(conn, :current_user)
|> check_session(conn, default)
end
@spec check_session(
{:error, :get_session, :current_user} | {:ok, :get_session, :current_user, any},
Plug.Conn.t(),
any
) :: Plug.Conn.t()
def check_session({:ok, :get_session, :current_user, user_id}, conn, _default) do
conn
|> assign(:client_logined, %{user_id: user_id})
end
def check_session({:error, :get_session, :current_user}, conn, _default) do
conn
|> PhoenixConverter.drop_session(:current_user)
|> PhoenixConverter.session_redirect("/", "You have no accses to see this page, Please try to login", :error)
|> halt()
end
end