Current section
Files
Jump to
Current section
Files
lib/plug/accesslog/formatter/remote_user.ex
defmodule Plug.AccessLog.Formatter.RemoteUser do
@moduledoc """
Determines remote user.
"""
import Plug.Conn
@doc """
Appends to log output.
"""
@spec append(String.t, Plug.Conn.t) :: String.t
def append(message, conn), do: message <> remote_user(conn)
defp get_user(credentials) do
try do
case parse_credentials(credentials) do
[ user, _pass ] -> user
_ -> "-"
end
rescue
_ -> "-"
end
end
defp parse_credentials(credentials) do
credentials
|> Base.decode64!()
|> String.split(":")
end
defp remote_user(conn) do
case get_req_header(conn, "Authorization") do
[<< "Basic ", credentials :: binary >>] -> get_user(credentials)
_ -> "-"
end
end
end