Current section

Files

Jump to
blossom lib blossom auth.ex
Raw

lib/blossom/auth.ex

defmodule Blossom.Auth do
alias Blossom.{Auth, Passwords, Utils}
alias Blossom.Builders.Auth, as: Builder
def issuer(config, opts, otp_app) do
Utils.option_or_key_config(config, opts, :issuer, otp_app)
end
def min_length(config, opts) do
Utils.option_or_key_config(config, opts, :min_length, 8)
end
defmacro __using__(opts \\ []) do
quote do
@opts unquote(opts)
@caller unquote(__CALLER__.module)
@name KilnCore.Utils.atom_name(@caller)
@config Application.compile_env(@name, Blossom, [])
@password_opts %{
min_length: Auth.min_length(@config, @opts)
}
@token_opts %{
audience: Utils.audience(@config, unquote(opts), @name),
expiration: Utils.expiration(@config, unquote(opts)),
issuer: Auth.issuer(@config, unquote(opts), @name),
secret: Utils.secret(@config, unquote(opts))
}
def validate_new_password(password) do
Passwords.validate(password, @password_opts)
end
def login(user, password) do
Builder.login(user, password, @token_opts)
end
end
end
end