Current section
Files
Jump to
Current section
Files
lib/user.ex
defmodule Magic.User do
@moduledoc """
Provides methods to interact with the User via the Magic API
"""
alias Magic.Token
@type issuer :: Token.issuer()
@type public_address :: Token.public_address()
@type did_token :: Token.did_token()
@type user :: %{email: String.t(), issuer: issuer, public_address: public_address}
@doc """
Retrieves information about the user by the supplied issuer
"""
@spec get_metadata_by_issuer!(issuer) :: user
def get_metadata_by_issuer!(issuer) do
%HTTPoison.Response{body: body} =
Magic.API.get!("/v1/admin/auth/user/get", nil, params: [issuer: issuer])
body["data"]
|> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
end
@doc """
Retrieves information about the user by the supplied public address
"""
@spec get_metadata_by_public_address!(public_address) :: user
def get_metadata_by_public_address!(public_address) do
issuer = Token.construct_issuer_with_public_address(public_address)
get_metadata_by_issuer!(issuer)
end
@doc """
Retrieves information about the user by the supplied DID Token
"""
@spec get_metadata_by_token!(did_token) :: user
def get_metadata_by_token!(did_token) do
issuer = Token.get_issuer(did_token)
get_metadata_by_issuer!(issuer)
end
@doc """
Logs a user out of all Magic SDK sessions by the supplied issuer
"""
@spec logout_by_issuer!(issuer) :: HTTPoison.Response.t()
def logout_by_issuer!(issuer) do
Magic.API.post!("/v2/admin/auth/user/logout", nil, params: [issuer: issuer])
end
@doc """
Logs a user out of all Magic SDK sessions by the supplied public address
"""
@spec logout_by_public_address!(public_address) :: HTTPoison.Response.t()
def logout_by_public_address!(public_address) do
issuer = Token.construct_issuer_with_public_address(public_address)
logout_by_issuer!(issuer)
end
@doc """
Logs a user out of all Magic SDK sessions by the supplied DID Token
"""
@spec logout_by_token!(did_token) :: HTTPoison.Response.t()
def logout_by_token!(did_token) do
issuer = Token.get_issuer(did_token)
logout_by_issuer!(issuer)
end
end