Packages

🔌 An Auth0 plug for Elixir meant to help you decode and user Auth0 JWKs

Current section

Files

Jump to
auth0_jwks lib plug validate_token.ex
Raw

lib/plug/validate_token.ex

defmodule Auth0Jwks.Plug.ValidateToken do
@behaviour Plug
import Plug.Conn
def init(opts), do: opts
def call(conn, _) do
conn
|> get_req_header("authorization")
|> extract_bearer_token()
|> handle_token(conn)
end
def extract_bearer_token([header | _]) do
~r/bearer (.+)/i
|> Regex.scan(header)
|> List.flatten()
|> case do
[_, token] -> token
_ -> nil
end
end
def extract_bearer_token(_), do: nil
def handle_token(token, conn) do
token
|> Auth0Jwks.Token.verify_and_validate()
|> case do
{:ok, claims} ->
conn
|> assign(:auth0_claims, claims)
|> assign(:auth0_access_token, token)
_ ->
Auth0Jwks.Plug.Response.unauthorized(conn)
end
end
end