Current section

Files

Jump to
access_token lib access_token.ex
Raw

lib/access_token.ex

defmodule AccessToken do
@moduledoc """
Access token generator.
"""
@default_length 64
@doc """
Generates a random access token with URL and filename safe alphabet.
iex> AccessToken.generate()
"MPjl2Y5AkvtP30rFb3ABRwkYNWsuRhJXkRQLhjaweqsC7H4fg8H2UmY5RpOkbO05"
iex> AccessToken.generate(20)
"XpT7OoqccDKg8Oa14B5w"
"""
@spec generate(integer) :: String.t()
def generate(length \\ @default_length) do
:crypto.strong_rand_bytes(length)
|> Base.url_encode64(padding: false)
|> String.slice(0, length)
end
end