Current section

Files

Jump to
guard lib guard controller active_session.ex
Raw

lib/guard/controller/active_session.ex

defmodule Guard.Controller.ActiveSession do
use Phoenix.Controller
alias Guard.{Controller, Authenticator}
require Logger
import Guard.Controller, only: [send_error: 3]
plug Guardian.Plug.EnsureAuthenticated, claims: %{"typ" => "access"}
def call(conn, opts) do
try do
super(conn, opts)
rescue
error -> send_error(conn, error, :internal_server_error)
end
end
defp generate_response(resp, conn) do
case resp do
{ :ok, claims } ->
perms = Guard.Guardian.decode_permissions_from_claims(claims)
user = Guardian.Plug.current_resource(conn)
root_user = claims["usr"]
extra = if root_user do
%{root_user: root_user}
else
%{}
end
conn
|> put_status(:ok)
|> json(Map.merge(%{jwt: Guardian.Plug.current_token(conn), perms: perms, user: user}, extra))
{ :error, _reason } ->
conn
|> put_status(:not_found)
|> Controller.send_error(:not_found)
end
end
def show(conn, _) do
Authenticator.current_claims(conn) |> generate_response(conn)
end
end