30 lines
718 B
Elixir
30 lines
718 B
Elixir
defmodule Localiser.Web.Token do
|
|
use Joken.Config
|
|
|
|
@ttl 86_400 # 24 hours in seconds
|
|
|
|
@impl true
|
|
def token_config do
|
|
default_claims(
|
|
iss: "localiserd",
|
|
default_exp: @ttl
|
|
)
|
|
end
|
|
|
|
def generate(claims) do
|
|
secret = Application.fetch_env!(:localiserd, :jwt_secret)
|
|
signer = Joken.Signer.create("HS256", secret)
|
|
|
|
case generate_and_sign(claims, signer) do
|
|
{:ok, token, _claims} -> token
|
|
{:error, reason} -> raise "Token generation failed: #{inspect(reason)}"
|
|
end
|
|
end
|
|
|
|
def verify_token(token) do
|
|
secret = Application.fetch_env!(:localiserd, :jwt_secret)
|
|
signer = Joken.Signer.create("HS256", secret)
|
|
verify_and_validate(token, signer)
|
|
end
|
|
end
|