Update
This commit is contained in:
parent
987d32398b
commit
9a7d7af693
5 changed files with 78 additions and 34 deletions
|
@ -0,0 +1,3 @@
|
|||
<main>
|
||||
<.flash_group flash={@flash} />
|
||||
</main>
|
|
@ -1,4 +1,6 @@
|
|||
<main class="flex min-h-screen items-center justify-center">
|
||||
<.flash_group flash={@flash} />
|
||||
|
||||
<form class="flex flex-col gap-2" action="/auth/sign_in" method="post">
|
||||
<input type="hidden" name="_csrf_token" value={get_csrf_token()} />
|
||||
<label for="email">E-mail address *</label>
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
<main class="flex min-h-screen items-center justify-center">
|
||||
<.flash_group flash={@flash} />
|
||||
|
||||
<form class="flex flex-col gap-2" action="/auth" method="post">
|
||||
<input type="hidden" name="_csrf_token" value={get_csrf_token()} />
|
||||
<label for="username">Username *</label>
|
||||
|
|
|
@ -11,7 +11,7 @@ defmodule NullaWeb.AuthController do
|
|||
if Argon2.verify_pass(password, user.password) do
|
||||
conn
|
||||
|> put_session(:user_id, user.id)
|
||||
|> redirect(to: "/")
|
||||
|> redirect(to: ~p"/")
|
||||
else
|
||||
conn
|
||||
|> put_flash(:error, "Invalid login or password.")
|
||||
|
@ -28,37 +28,39 @@ defmodule NullaWeb.AuthController do
|
|||
conn
|
||||
|> configure_session(drop: true)
|
||||
|> put_flash(:info, "You have been logged out.")
|
||||
|> redirect(to: "/")
|
||||
|> redirect(to: ~p"/")
|
||||
end
|
||||
|
||||
def sign_up(conn, %{"username" => username, "email" => email, "password" => password}) do
|
||||
instance_settings = InstanceSettings.get_instance_settings!()
|
||||
|
||||
if not instance_settings.registration do
|
||||
redirect(conn, to: "/")
|
||||
end
|
||||
|
||||
domain = instance_settings.domain
|
||||
hashed_password = Argon2.hash_pwd_salt(password)
|
||||
|
||||
{publicKeyPem, privateKeyPem} = Nulla.KeyGen.gen()
|
||||
|
||||
with {:ok, actor} <- Actor.create_actor_minimal(username, domain, publicKeyPem),
|
||||
{:ok, user} <-
|
||||
User.create_user(%{
|
||||
id: actor.id,
|
||||
email: email,
|
||||
password: hashed_password,
|
||||
privateKeyPem: privateKeyPem,
|
||||
last_active_at: DateTime.utc_now()
|
||||
}) do
|
||||
conn
|
||||
|> put_session(:user_id, user.id)
|
||||
|> put_flash(:info, "You're registred!")
|
||||
|> redirect(to: "/")
|
||||
|> put_flash(:error, "Registration is disabled.")
|
||||
|> redirect(to: ~p"/")
|
||||
else
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
render(conn, "sign_up.html", changeset: changeset)
|
||||
domain = instance_settings.domain
|
||||
hashed_password = Argon2.hash_pwd_salt(password)
|
||||
|
||||
{publicKeyPem, privateKeyPem} = Nulla.KeyGen.gen()
|
||||
|
||||
with {:ok, actor} <- Actor.create_actor_minimal(username, domain, publicKeyPem),
|
||||
{:ok, user} <-
|
||||
User.create_user(%{
|
||||
id: actor.id,
|
||||
email: email,
|
||||
password: hashed_password,
|
||||
privateKeyPem: privateKeyPem,
|
||||
last_active_at: DateTime.utc_now()
|
||||
}) do
|
||||
conn
|
||||
|> put_session(:user_id, user.id)
|
||||
|> put_flash(:info, "You're registred!")
|
||||
|> redirect(to: ~p"/")
|
||||
else
|
||||
{:error, %Ecto.Changeset{} = changeset} ->
|
||||
render(conn, "sign_up.html", changeset: changeset)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue