mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-02-23 05:34:33 +01:00
Finishes adding reactivation functionality.
This commit is contained in:
parent
94abf230d3
commit
367cc6cb00
9 changed files with 50 additions and 10 deletions
|
@ -42,7 +42,6 @@
|
|||
@import "views/comments";
|
||||
@import "views/commissions";
|
||||
@import "views/communications";
|
||||
@import "views/deactivations";
|
||||
@import "views/duplicates";
|
||||
@import "views/filters";
|
||||
@import "views/galleries";
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
.deactivations__button-container {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
}
|
|
@ -833,6 +833,27 @@ defmodule Philomena.Users do
|
|||
|> Repo.update()
|
||||
end
|
||||
|
||||
@doc """
|
||||
Gets the user by reactivation token.
|
||||
|
||||
## Examples
|
||||
|
||||
iex> get_user_by_reactivation_token("validtoken")
|
||||
%User{}
|
||||
|
||||
iex> get_user_by_reactivation_token("invalidtoken")
|
||||
nil
|
||||
|
||||
"""
|
||||
def get_user_by_reactivation_token(token) do
|
||||
with {:ok, query} <- UserToken.verify_email_token_query(token, "reactivate"),
|
||||
%User{} = user <- Repo.one(query) do
|
||||
user
|
||||
else
|
||||
_ -> nil
|
||||
end
|
||||
end
|
||||
|
||||
@doc """
|
||||
Generates a new API key for the user.
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ defmodule Philomena.Users.UserToken do
|
|||
@change_email_validity_in_days 7
|
||||
@unlock_email_validity_in_days 7
|
||||
@session_validity_in_days 365
|
||||
@reactivate_validity_in_days 365 * 100
|
||||
|
||||
schema "user_tokens" do
|
||||
field :token, :binary
|
||||
|
@ -121,6 +122,7 @@ defmodule Philomena.Users.UserToken do
|
|||
defp days_for_context("confirm"), do: @confirm_validity_in_days
|
||||
defp days_for_context("reset_password"), do: @reset_password_validity_in_days
|
||||
defp days_for_context("unlock"), do: @unlock_email_validity_in_days
|
||||
defp days_for_context("reactivate"), do: @reactivate_validity_in_days
|
||||
|
||||
@doc """
|
||||
Checks if the token is valid and returns its underlying lookup query.
|
||||
|
|
|
@ -1,7 +1,22 @@
|
|||
defmodule PhilomenaWeb.ReactivationController do
|
||||
use PhilomenaWeb, :controller
|
||||
alias Philomena.Users.{User}
|
||||
|
||||
def index(conn, _params) do
|
||||
text(conn, "hello world")
|
||||
def show(conn, %{"token" => _}) do
|
||||
conn
|
||||
|> render("show.html")
|
||||
end
|
||||
|
||||
def post(conn, %{"token" => token}) do
|
||||
with user = %User{} <- Users.get_user_by_reactivation_token(token) do
|
||||
Users.reactivate_user(user)
|
||||
else
|
||||
nil ->
|
||||
nil
|
||||
end
|
||||
|
||||
conn
|
||||
|> put_flash(:info, "If the token provided was valid, your account has been reactivated.")
|
||||
|> redirect(to: "/")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -78,6 +78,8 @@ defmodule PhilomenaWeb.Router do
|
|||
:redirect_if_user_is_authenticated
|
||||
]
|
||||
|
||||
get "/reactivations/:token", ReactivationController, :show
|
||||
post "/reactivations/:token", ReactivationController, :post
|
||||
resources "/registrations", RegistrationController, only: [:new, :create], singleton: true
|
||||
end
|
||||
|
||||
|
@ -104,7 +106,6 @@ defmodule PhilomenaWeb.Router do
|
|||
resources "/registrations", RegistrationController, only: [:edit, :update], singleton: true
|
||||
resources "/sessions", SessionController, only: [:delete], singleton: true
|
||||
resources "/deactivations", DeactivationController, only: [:show, :delete], singleton: true
|
||||
get "/deactivations/:id/reactivate", DeactivationController, :index
|
||||
|
||||
scope "/registrations", Registration, as: :registration do
|
||||
resources "/totp", TotpController, only: [:edit, :update], singleton: true
|
||||
|
|
|
@ -3,7 +3,7 @@ h1 Deactivate Account
|
|||
.block
|
||||
.block__content.warning
|
||||
p.walloftext
|
||||
' Deactivating your account will <b>prevent you from logging into your account</b>. If you ever wish to re-activate your account later on, you may do so at any time. If you wish to wipe your personally identifiable data as well, please contact <a href="mailto:#{contact_email}">#{contact_email}</a>
|
||||
' Deactivating your account will prevent you from logging into your account. If you ever wish to re-activate your account later on, you may do so at any time. If you wish to wipe your personally identifiable data as well, please contact <a href="mailto:#{contact_email}">#{contact_email}</a>
|
||||
.deactivations__button-container
|
||||
= button_to "Back", ~p"/registrations/edit", class: "button"
|
||||
= button_to "Confirm", ~p"/deactivations", class: ["button", "button--state-danger"], method: :delete, data: [confirm: "Are you sure you want to deactivate your account?"]
|
||||
= button_to "Confirm", ~p"/deactivations", class: ["button", "button--state-danger", "button--separate-left"], method: :delete, data: [confirm: "Are you sure you want to deactivate your account?"]
|
3
lib/philomena_web/templates/reactivation/show.html.slime
Normal file
3
lib/philomena_web/templates/reactivation/show.html.slime
Normal file
|
@ -0,0 +1,3 @@
|
|||
h1 Rectivate Account
|
||||
= button_to "Cancel", ~p"/", class: "button"
|
||||
= button_to "Reactivate", "", class: ["button", "button--state-success", "button--separate-left"], method: "post", data: [confirm: "Are you sure you want to reactivate your account?"]
|
3
lib/philomena_web/views/reactivation_view.ex
Normal file
3
lib/philomena_web/views/reactivation_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule PhilomenaWeb.ReactivationView do
|
||||
use PhilomenaWeb, :view
|
||||
end
|
Loading…
Reference in a new issue