add delete user function
This commit is contained in:
parent
d424a6631a
commit
8e4e3872f5
@ -244,6 +244,11 @@ defmodule Cannery.Accounts do
|
||||
end
|
||||
end
|
||||
|
||||
@spec delete_user!(User.t()) :: User.t()
|
||||
def delete_user!(%User{} = user) do
|
||||
user |> Repo.delete!()
|
||||
end
|
||||
|
||||
## Session
|
||||
|
||||
@doc """
|
||||
|
@ -64,6 +64,20 @@ defmodule CanneryWeb.UserSettingsController do
|
||||
end
|
||||
end
|
||||
|
||||
def delete(conn, %{"id" => user_id}) do
|
||||
if user_id == conn.assigns.current_user.id do
|
||||
Accounts.delete_user!(conn.assigns.current_user)
|
||||
|
||||
conn
|
||||
|> put_flash(:error, "Your account has been deleted")
|
||||
|> redirect(to: Routes.home_path(conn, :index))
|
||||
else
|
||||
conn
|
||||
|> put_flash(:error, "Unable to delete user")
|
||||
|> redirect(to: Routes.user_settings_path(conn, :edit))
|
||||
end
|
||||
end
|
||||
|
||||
defp assign_email_and_password_changesets(conn, _opts) do
|
||||
user = conn.assigns.current_user
|
||||
|
||||
|
@ -47,6 +47,7 @@ defmodule CanneryWeb.Router do
|
||||
|
||||
get "/users/settings", UserSettingsController, :edit
|
||||
put "/users/settings", UserSettingsController, :update
|
||||
delete "/users/settings/:id", UserSettingsController, :delete
|
||||
get "/users/settings/confirm_email/:token", UserSettingsController, :confirm_email
|
||||
|
||||
live "/tags", TagLive.Index, :index
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div class="flex flex-col justify-center items-center space-y-4">
|
||||
<div class="mb-8 flex flex-col justify-center items-center space-y-8">
|
||||
<h1 class="title text-primary-500 text-xl">
|
||||
Settings
|
||||
</h1>
|
||||
@ -82,4 +82,8 @@
|
||||
|
||||
<%= submit "Change password", class: "btn btn-primary" %>
|
||||
<% end %>
|
||||
|
||||
<%= link "Delete User", to: Routes.user_settings_path(@conn, :delete, @current_user),
|
||||
method: :delete, class: "btn btn-alert",
|
||||
data: [confirm: "Are you sure you want to delete your account?"] %>
|
||||
</div>
|
Loading…
Reference in New Issue
Block a user