Current section
Files
Jump to
Current section
Files
lib/users.ex
defmodule HubIdentityElixir.Users do
alias HubIdentityElixir.Users.{Email, Verification}
@doc """
Get the list of a users emails from HubIdentity.
## Examples
iex> HubIdentityElixir.User.get_emails(user_uid)
{:ok,
[
%{
"Object" => "Email",
"address" => "test@hivelocity.co.jp",
"confirmed_at" => "2021-04-07T02:52:31Z",
"primary" => true,
"uid" => "81b7d2ef-43ef-42f8-922d-62602eac518a"
},
%{
"Object" => "Email",
"address" => "test2@hivelocity.co.jp",
"confirmed_at" => "2021-06-03T07:59:55Z",
"primary" => false,
"uid" => "8c8c09a7-b500-430c-a45c-569bd9fa5a08"
}
]}
"""
def get_emails(user_uid) do
Email.get(user_uid)
end
@doc """
Sends an email confirmation to the email address to add a new users email.
## Examples
iex> HubIdentityElixir.User.add_email(user_uid, address)
{:ok, %HTTPoison{body: "{\"success\":\"email verification request sent\"}"}
"""
def add_email(user_uid, address) do
Email.create(user_uid, address)
end
@doc """
Remove a users email.
## Examples
iex> HubIdentityElixir.HubIdentity.remove_user_email(user_uid, email_uid)
{:ok, %HTTPoison{body: "{\"success\":\"email email_uid deleted\"}"}}
"""
def remove_email(user_uid, email_uid) do
Email.delete(user_uid, email_uid)
end
@doc """
Sends an email verification code to the email address.
Reference length must be between 22 and 44 characters
## Examples
iex> HubIdentityElixir.User.send_verification(user_uid, reference)
{:ok, %HTTPoison{body: "successful operation"}
"""
def send_verification(user_uid, reference) do
Verification.create(user_uid, reference)
end
@doc """
Verify the code and reference to validate the user.
You have 3 attemps.
## Examples
iex> HubIdentityElixir.User.validate_verification_code(user_uid, reference, valid_code)
{:ok, %{"ok" => "verification success"}}
iex> HubIdentityElixir.User.validate_verification_code(user_uid, reference, wrong_code)
{:error, "{\"error\":\"verification failed\"}"}
iex> HubIdentityElixir.User.validate_verification_code(user_uid, reference, 3rd_attemp_code)
{:error, "{\"error\":\"max attempts reached\"}"}
"""
def validate_verification_code(user_uid, reference, code) do
Verification.validate(user_uid, reference, code)
end
@doc """
Renew the reference and sends a new verification code to the user.
## Examples
iex> HubIdentityElixir.User.renew_verification_code(user_uid, old_reference, new_reference)
{:ok, %HTTPoison{body: "successful operation"}
"""
def renew_verification_code(user_uid, old_reference, new_reference) do
Verification.renew(user_uid, old_reference, new_reference)
end
end