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