require Logger
plug(:only_if_public_instance when action in [:public_timeline, :public_and_external_timeline])
- plug(:fetch_flash when action in [:confirm_email, :resend_confirmation_email])
action_fallback(:errors)
def verify_credentials(%{assigns: %{user: user}} = conn, _params) do
end
end
- def confirm_email(conn, %{"token" => token}) do
- with %User{} = user <- User.get_by_confirmation_token(token),
+ def confirm_email(conn, %{"user_id" => uid, "token" => token}) do
+ with %User{} = user <- Repo.get(User, uid),
true <- user.local,
+ true <- user.info.confirmation_pending,
+ true <- user.info.confirmation_token == token,
info_change <- User.Info.confirmation_changeset(user.info, :confirmed),
changeset <- Changeset.change(user) |> Changeset.put_embed(:info, info_change),
{:ok, _} <- User.update_and_set_cache(changeset) do
conn
- |> put_flash(:info, "Email confirmed. Please sign in.")
|> redirect(to: "/")
end
end
with %User{} = user <- User.get_by_nickname_or_email(nickname_or_email),
{:ok, _} <- User.try_send_confirmation_email(user) do
conn
- |> put_flash(:info, "Email confirmation has been sent.")
|> json_response(:no_content, "")
end
end