refactor(credo): Refactor to appease new credo checks (complexity and logging)
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -313,34 +313,46 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
|
||||
defp change_email(%User{email: old_email} = user, new_email, notify) do
|
||||
if Authenticator.can_change_email?(user) do
|
||||
if new_email != old_email do
|
||||
if Email.Checker.valid?(new_email) do
|
||||
case Users.update_user(user, %{email: new_email}) do
|
||||
{:ok, %User{} = updated_user} ->
|
||||
if notify do
|
||||
updated_user
|
||||
|> Email.Admin.user_email_change_old(old_email)
|
||||
|> Email.Mailer.send_email()
|
||||
|
||||
updated_user
|
||||
|> Email.Admin.user_email_change_new(old_email)
|
||||
|> Email.Mailer.send_email()
|
||||
end
|
||||
|
||||
{:ok, updated_user}
|
||||
|
||||
{:error, %Ecto.Changeset{} = err} ->
|
||||
Logger.debug(inspect(err))
|
||||
{:error, dgettext("errors", "Failed to update user email")}
|
||||
end
|
||||
else
|
||||
{:error, dgettext("errors", "The new email doesn't seem to be valid")}
|
||||
end
|
||||
do_change_email_different(user, old_email, new_email, notify)
|
||||
else
|
||||
{:error, dgettext("errors", "The new email must be different")}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@spec do_change_email_different(User.t(), String.t(), String.t(), boolean()) ::
|
||||
{:ok, User.t()} | {:error, String.t()}
|
||||
defp do_change_email_different(user, old_email, new_email, notify) do
|
||||
if Email.Checker.valid?(new_email) do
|
||||
do_change_email(user, old_email, new_email, notify)
|
||||
else
|
||||
{:error, dgettext("errors", "The new email doesn't seem to be valid")}
|
||||
end
|
||||
end
|
||||
|
||||
@spec do_change_email(User.t(), String.t(), String.t(), boolean()) ::
|
||||
{:ok, User.t()} | {:error, String.t()}
|
||||
defp do_change_email(user, old_email, new_email, notify) do
|
||||
case Users.update_user(user, %{email: new_email}) do
|
||||
{:ok, %User{} = updated_user} ->
|
||||
if notify do
|
||||
updated_user
|
||||
|> Email.Admin.user_email_change_old(old_email)
|
||||
|> Email.Mailer.send_email()
|
||||
|
||||
updated_user
|
||||
|> Email.Admin.user_email_change_new(old_email)
|
||||
|> Email.Mailer.send_email()
|
||||
end
|
||||
|
||||
{:ok, updated_user}
|
||||
|
||||
{:error, %Ecto.Changeset{} = err} ->
|
||||
Logger.debug(inspect(err))
|
||||
{:error, dgettext("errors", "Failed to update user email")}
|
||||
end
|
||||
end
|
||||
|
||||
@spec change_role(User.t(), atom(), boolean()) ::
|
||||
{:ok, User.t()} | {:error, String.t() | Ecto.Changeset.t()}
|
||||
defp change_role(%User{role: old_role} = user, new_role, notify) do
|
||||
|
||||
@@ -53,13 +53,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Comment do
|
||||
current_ip,
|
||||
user_agent
|
||||
) do
|
||||
case Comments.create_comment(args) do
|
||||
{:ok, _, %CommentModel{} = comment} ->
|
||||
{:ok, comment}
|
||||
|
||||
{:error, err} ->
|
||||
{:error, err}
|
||||
end
|
||||
do_create_comment(args)
|
||||
else
|
||||
{:error,
|
||||
dgettext(
|
||||
@@ -80,6 +74,18 @@ defmodule Mobilizon.GraphQL.Resolvers.Comment do
|
||||
{:error, dgettext("errors", "You are not allowed to create a comment if not connected")}
|
||||
end
|
||||
|
||||
@spec do_create_comment(map()) ::
|
||||
{:ok, CommentModel.t()} | {:error, :entity_tombstoned | atom() | Ecto.Changeset.t()}
|
||||
defp do_create_comment(args) do
|
||||
case Comments.create_comment(args) do
|
||||
{:ok, _, %CommentModel{} = comment} ->
|
||||
{:ok, comment}
|
||||
|
||||
{:error, err} ->
|
||||
{:error, err}
|
||||
end
|
||||
end
|
||||
|
||||
@spec update_comment(any(), map(), Absinthe.Resolution.t()) ::
|
||||
{:ok, CommentModel.t()} | {:error, :unauthorized | :not_found | any() | String.t()}
|
||||
def update_comment(
|
||||
|
||||
@@ -480,36 +480,7 @@ defmodule Mobilizon.GraphQL.Resolvers.User do
|
||||
context: %{current_user: %User{email: old_email} = user}
|
||||
}) do
|
||||
if Authenticator.can_change_email?(user) do
|
||||
case Authenticator.login(old_email, password) do
|
||||
{:ok, %User{}} ->
|
||||
if new_email != old_email do
|
||||
if Email.Checker.valid?(new_email) do
|
||||
case Users.update_user_email(user, new_email) do
|
||||
{:ok, %User{} = user} ->
|
||||
user
|
||||
|> Email.User.send_email_reset_old_email()
|
||||
|> Email.Mailer.send_email()
|
||||
|
||||
user
|
||||
|> Email.User.send_email_reset_new_email()
|
||||
|> Email.Mailer.send_email()
|
||||
|
||||
{:ok, user}
|
||||
|
||||
{:error, %Ecto.Changeset{} = err} ->
|
||||
Logger.debug(inspect(err))
|
||||
{:error, dgettext("errors", "Failed to update user email")}
|
||||
end
|
||||
else
|
||||
{:error, dgettext("errors", "The new email doesn't seem to be valid")}
|
||||
end
|
||||
else
|
||||
{:error, dgettext("errors", "The new email must be different")}
|
||||
end
|
||||
|
||||
{:error, _} ->
|
||||
{:error, dgettext("errors", "The password provided is invalid")}
|
||||
end
|
||||
do_change_mail_can_change_mail(user, old_email, new_email, password)
|
||||
else
|
||||
{:error, dgettext("errors", "User cannot change email")}
|
||||
end
|
||||
@@ -519,6 +490,51 @@ defmodule Mobilizon.GraphQL.Resolvers.User do
|
||||
{:error, dgettext("errors", "You need to be logged-in to change your email")}
|
||||
end
|
||||
|
||||
@spec do_change_mail_can_change_mail(User.t(), String.t(), String.t(), String.t()) ::
|
||||
{:ok, User.t()} | {:error, String.t()}
|
||||
defp do_change_mail_can_change_mail(user, old_email, new_email, password) do
|
||||
case Authenticator.login(old_email, password) do
|
||||
{:ok, %User{}} ->
|
||||
if new_email != old_email do
|
||||
do_change_mail_new_email(user, new_email)
|
||||
else
|
||||
{:error, dgettext("errors", "The new email must be different")}
|
||||
end
|
||||
|
||||
{:error, _} ->
|
||||
{:error, dgettext("errors", "The password provided is invalid")}
|
||||
end
|
||||
end
|
||||
|
||||
@spec do_change_mail_new_email(User.t(), String.t()) :: {:ok, User.t()} | {:error, String.t()}
|
||||
defp do_change_mail_new_email(user, new_email) do
|
||||
if Email.Checker.valid?(new_email) do
|
||||
do_change_mail(user, new_email)
|
||||
else
|
||||
{:error, dgettext("errors", "The new email doesn't seem to be valid")}
|
||||
end
|
||||
end
|
||||
|
||||
@spec do_change_mail(User.t(), String.t()) :: {:ok, User.t()} | {:error, String.t()}
|
||||
defp do_change_mail(user, new_email) do
|
||||
case Users.update_user_email(user, new_email) do
|
||||
{:ok, %User{} = user} ->
|
||||
user
|
||||
|> Email.User.send_email_reset_old_email()
|
||||
|> Email.Mailer.send_email()
|
||||
|
||||
user
|
||||
|> Email.User.send_email_reset_new_email()
|
||||
|> Email.Mailer.send_email()
|
||||
|
||||
{:ok, user}
|
||||
|
||||
{:error, %Ecto.Changeset{} = err} ->
|
||||
Logger.debug(inspect(err))
|
||||
{:error, dgettext("errors", "Failed to update user email")}
|
||||
end
|
||||
end
|
||||
|
||||
@spec validate_email(map(), %{token: String.t()}, map()) ::
|
||||
{:ok, User.t()} | {:error, String.t()}
|
||||
def validate_email(_parent, %{token: token}, _resolution) do
|
||||
|
||||
Reference in New Issue
Block a user