Current section
Files
Jump to
Current section
Files
lib/authx_ex/credentials.ex
defmodule AuthShield.Credentials do
@moduledoc """
Credentials are means to proof that an identity is valid
in authentications.
There are multiple types of credentials and we implements
three of them.
- password (An sequence of digits that only the user known's);
- pin (An code of 4 or 6 digits that usually are only numbers);
- totp (An time based code generated in other factor or device);
This module provides an interaface that delegates to the specific credential functions.
"""
use Delx, otp_app: :auth_shield
alias AuthShield.Credentials.{Passwords, PIN, TOTP}
# Password
defdelegate create_password(params), to: Passwords, as: :insert
defdelegate create_password!(params), to: Passwords, as: :insert!
defdelegate update_password(password, pass_code), to: Passwords, as: :update
defdelegate update_password!(password, pass_code), to: Passwords, as: :update!
defdelegate list_password(filters \\ []), to: Passwords, as: :list
defdelegate get_password_by(filters), to: Passwords, as: :get_by
defdelegate get_password_by!(filters), to: Passwords, as: :get_by!
defdelegate delete_password(password), to: Passwords, as: :delete
defdelegate delete_password!(password), to: Passwords, as: :delete!
defdelegate check_password?(password, pass_code), to: Passwords, as: :check_password?
# PIN
defdelegate create_pin(params), to: PIN, as: :insert
defdelegate create_pin!(params), to: PIN, as: :insert!
defdelegate list_pin(filters \\ []), to: PIN, as: :list
defdelegate get_pin_by(filters), to: PIN, as: :get_by
defdelegate get_pin_by!(filters), to: PIN, as: :get_by!
defdelegate delete_pin(pin), to: PIN, as: :delete
defdelegate delete_pin!(pin), to: PIN, as: :delete!
defdelegate check_pin?(pin, pin_code), to: PIN, as: :check_pin?
# TOTP
defdelegate create_totp(params), to: TOTP, as: :insert
defdelegate create_totp!(params), to: TOTP, as: :insert!
defdelegate list_totp(filters \\ []), to: TOTP, as: :list
defdelegate get_totp_by(filters), to: TOTP, as: :get_by
defdelegate get_totp_by!(filters), to: TOTP, as: :get_by!
defdelegate delete_totp(totp), to: TOTP, as: :delete
defdelegate delete_totp!(totp), to: TOTP, as: :delete!
defdelegate check_totp?(totp, totp_code, datetime \\ NaiveDateTime.utc_now()),
to: TOTP,
as: :check_totp?
end