defmodule Rivet.Auth.Identify do
@moduledoc """
"""
alias Rivet.{Ident, Auth}
###########################################################################
@doc """
"""
@spec identify(String.t(), map()) :: {:ok | :error, Auth.Domain.t()} | {:exists, %Ident.Email{}}
def identify(hostname, %{email: eaddr}) do
case Ident.Email.all!(address: eaddr) do
[%Ident.Email{} = email] ->
{:exists, email}
_other ->
# create new user profile with identity info only
Ident.User.Lib.Signup.only_identity(%Auth.Domain{
hostname: hostname,
input: %{email: %{address: eaddr, verified: false}, settings: %{}}
})
end
end
def identify(_, _), do: :error
end