Packages
guard
0.4.0
0.19.1
0.19.0
0.18.0
0.17.2
0.17.1
0.17.0
0.16.3
0.16.2
0.16.1
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.7.0
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
0.3.0
0.2.0
0.1.0
Useful package for dealing with user authentication and signup
Current section
Files
Jump to
Current section
Files
lib/guard/plug/audit_logger.ex
defmodule Guard.Plug.AuditLogger do
@moduledoc """
Attached metadata to Logger for audit logging
"""
require Logger
alias Guard.Authenticator
@behaviour Plug
def init(opts) do
Keyword.get(opts, :log, :info)
end
def call(conn, _level) do
remote_ip = case Plug.Conn.get_req_header(conn, "x-forwarded-for") do
[forwarded|_rest] -> forwarded
_ -> Enum.join(Tuple.to_list(conn.remote_ip), ".")
end
Logger.metadata(remote_ip: remote_ip)
case Authenticator.current_claims(conn) do
{ :ok, _claims } ->
user = Guardian.Plug.current_resource(conn)
if user do
Logger.metadata(user_id: user.id)
else
Logger.metadata(user_id: "no_user")
end
conn
_ ->
conn
end
end
end