Current section
Files
Jump to
Current section
Files
lib/riverside/auth_error.ex
defmodule Riverside.AuthError do
@type t :: %__MODULE__{
code: pos_integer,
headers: map
}
defstruct code: 401, headers: %{}
def auth_error_with_code(code \\ 401) do
%__MODULE__{
code: code,
headers: %{}
}
end
def put_auth_error_header(err, type, value) do
update_in(err.headers, fn headers -> Map.put(headers, type, value) end)
end
def put_auth_error_basic_header(err, realm) do
put_auth_error_header(err,
"WWW-Authenticate",
"Basic realm=\"#{realm}\"")
end
def put_auth_error_bearer_header(err, realm, error \\ nil) do
if error != nil do
put_auth_error_header(err,
"WWW-Authenticate",
"Bearer realm=\"#{realm}\" error=\"#{error}\"")
else
put_auth_error_header(err,
"WWW-Authenticate",
"Bearer realm=\"#{realm}\"")
end
end
end