Current section
Files
Jump to
Current section
Files
lib/plug/accesslog/default_formatter/remote_user.ex
defmodule Plug.AccessLog.DefaultFormatter.RemoteUser do
@moduledoc """
Determines remote user.
"""
import Plug.Conn
@doc """
Formats the log output.
"""
@spec format(Plug.Conn.t) :: iodata
def format(conn) do
case get_req_header(conn, "authorization") do
[<< "Basic ", credentials :: binary >>] -> get_user(credentials)
_ -> "-"
end
end
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
end