forked from shibao/cannery
		
	add delete user function
This commit is contained in:
		| @@ -244,6 +244,11 @@ defmodule Cannery.Accounts do | |||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  |  | ||||||
|  |   @spec delete_user!(User.t()) :: User.t() | ||||||
|  |   def delete_user!(%User{} = user) do | ||||||
|  |     user |> Repo.delete!() | ||||||
|  |   end | ||||||
|  |  | ||||||
|   ## Session |   ## Session | ||||||
|  |  | ||||||
|   @doc """ |   @doc """ | ||||||
|   | |||||||
| @@ -64,6 +64,20 @@ defmodule CanneryWeb.UserSettingsController do | |||||||
|     end |     end | ||||||
|   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 |   defp assign_email_and_password_changesets(conn, _opts) do | ||||||
|     user = conn.assigns.current_user |     user = conn.assigns.current_user | ||||||
|  |  | ||||||
|   | |||||||
| @@ -47,6 +47,7 @@ defmodule CanneryWeb.Router do | |||||||
|  |  | ||||||
|     get "/users/settings", UserSettingsController, :edit |     get "/users/settings", UserSettingsController, :edit | ||||||
|     put "/users/settings", UserSettingsController, :update |     put "/users/settings", UserSettingsController, :update | ||||||
|  |     delete "/users/settings/:id", UserSettingsController, :delete | ||||||
|     get "/users/settings/confirm_email/:token", UserSettingsController, :confirm_email |     get "/users/settings/confirm_email/:token", UserSettingsController, :confirm_email | ||||||
|  |  | ||||||
|     live "/tags", TagLive.Index, :index |     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"> |   <h1 class="title text-primary-500 text-xl"> | ||||||
|     Settings |     Settings | ||||||
|   </h1> |   </h1> | ||||||
| @@ -82,4 +82,8 @@ | |||||||
|  |  | ||||||
|     <%= submit "Change password", class: "btn btn-primary" %> |     <%= submit "Change password", class: "btn btn-primary" %> | ||||||
|   <% end %> |   <% 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> | </div> | ||||||
		Reference in New Issue
	
	Block a user