mobilizon/lib/eventos/actors/service/activation.ex

36 lines
1.0 KiB
Elixir
Raw Normal View History

defmodule Eventos.Actors.Service.Activation do
@moduledoc false
alias Eventos.{Mailer, Repo, Actors.User, Actors}
alias Eventos.Email.User, as: UserEmail
require Logger
@doc false
def check_confirmation_token(token) when is_binary(token) do
with %User{} = user <- Repo.get_by(User, confirmation_token: token),
{:ok, %User{} = user} <-
Actors.update_user(user, %{
"confirmed_at" => DateTime.utc_now(),
"confirmation_sent_at" => nil,
"confirmation_token" => nil
}) do
{:ok, Repo.preload(user, :actors)}
else
_err ->
{:error, "Invalid token"}
end
end
def resend_confirmation_email(%User{} = user, locale \\ "en") do
{:ok, user} = Actors.update_user(user, %{"confirmation_sent_at" => DateTime.utc_now()})
send_confirmation_email(user, locale)
end
def send_confirmation_email(%User{} = user, locale \\ "en") do
user
|> UserEmail.confirmation_email(locale)
|> Mailer.deliver_later()
end
end