mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-02-23 13:44:32 +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/comments";
|
||||||
@import "views/commissions";
|
@import "views/commissions";
|
||||||
@import "views/communications";
|
@import "views/communications";
|
||||||
@import "views/deactivations";
|
|
||||||
@import "views/duplicates";
|
@import "views/duplicates";
|
||||||
@import "views/filters";
|
@import "views/filters";
|
||||||
@import "views/galleries";
|
@import "views/galleries";
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
.deactivations__button-container {
|
|
||||||
display: flex;
|
|
||||||
gap: 8px;
|
|
||||||
}
|
|
|
@ -833,6 +833,27 @@ defmodule Philomena.Users do
|
||||||
|> Repo.update()
|
|> Repo.update()
|
||||||
end
|
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 """
|
@doc """
|
||||||
Generates a new API key for the user.
|
Generates a new API key for the user.
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ defmodule Philomena.Users.UserToken do
|
||||||
@change_email_validity_in_days 7
|
@change_email_validity_in_days 7
|
||||||
@unlock_email_validity_in_days 7
|
@unlock_email_validity_in_days 7
|
||||||
@session_validity_in_days 365
|
@session_validity_in_days 365
|
||||||
|
@reactivate_validity_in_days 365 * 100
|
||||||
|
|
||||||
schema "user_tokens" do
|
schema "user_tokens" do
|
||||||
field :token, :binary
|
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("confirm"), do: @confirm_validity_in_days
|
||||||
defp days_for_context("reset_password"), do: @reset_password_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("unlock"), do: @unlock_email_validity_in_days
|
||||||
|
defp days_for_context("reactivate"), do: @reactivate_validity_in_days
|
||||||
|
|
||||||
@doc """
|
@doc """
|
||||||
Checks if the token is valid and returns its underlying lookup query.
|
Checks if the token is valid and returns its underlying lookup query.
|
||||||
|
|
|
@ -1,7 +1,22 @@
|
||||||
defmodule PhilomenaWeb.ReactivationController do
|
defmodule PhilomenaWeb.ReactivationController do
|
||||||
use PhilomenaWeb, :controller
|
use PhilomenaWeb, :controller
|
||||||
|
alias Philomena.Users.{User}
|
||||||
|
|
||||||
def index(conn, _params) do
|
def show(conn, %{"token" => _}) do
|
||||||
text(conn, "hello world")
|
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
|
||||||
end
|
end
|
||||||
|
|
|
@ -78,6 +78,8 @@ defmodule PhilomenaWeb.Router do
|
||||||
:redirect_if_user_is_authenticated
|
:redirect_if_user_is_authenticated
|
||||||
]
|
]
|
||||||
|
|
||||||
|
get "/reactivations/:token", ReactivationController, :show
|
||||||
|
post "/reactivations/:token", ReactivationController, :post
|
||||||
resources "/registrations", RegistrationController, only: [:new, :create], singleton: true
|
resources "/registrations", RegistrationController, only: [:new, :create], singleton: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -104,7 +106,6 @@ defmodule PhilomenaWeb.Router do
|
||||||
resources "/registrations", RegistrationController, only: [:edit, :update], singleton: true
|
resources "/registrations", RegistrationController, only: [:edit, :update], singleton: true
|
||||||
resources "/sessions", SessionController, only: [:delete], singleton: true
|
resources "/sessions", SessionController, only: [:delete], singleton: true
|
||||||
resources "/deactivations", DeactivationController, only: [:show, :delete], singleton: true
|
resources "/deactivations", DeactivationController, only: [:show, :delete], singleton: true
|
||||||
get "/deactivations/:id/reactivate", DeactivationController, :index
|
|
||||||
|
|
||||||
scope "/registrations", Registration, as: :registration do
|
scope "/registrations", Registration, as: :registration do
|
||||||
resources "/totp", TotpController, only: [:edit, :update], singleton: true
|
resources "/totp", TotpController, only: [:edit, :update], singleton: true
|
||||||
|
|
|
@ -3,7 +3,7 @@ h1 Deactivate Account
|
||||||
.block
|
.block
|
||||||
.block__content.warning
|
.block__content.warning
|
||||||
p.walloftext
|
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
|
.deactivations__button-container
|
||||||
= button_to "Back", ~p"/registrations/edit", class: "button"
|
= 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