Update sign_in

This commit is contained in:
Mirai Kumiko 2025-06-21 14:31:37 +02:00
parent 5ece6bef19
commit 987d32398b
Signed by: miraikumiko
GPG key ID: 3F178B1B5E0CB278
2 changed files with 26 additions and 4 deletions

View file

@ -43,7 +43,9 @@ defmodule Nulla.Models.User do
|> Repo.insert() |> Repo.insert()
end end
def get_user_by_username(username), do: Repo.get_by(User, username: username) def get_user(by) when is_map(by) or is_list(by) do
Repo.get_by(User, by)
end
def get_total_users_count() do def get_total_users_count() do
Repo.aggregate(from(u in User), :count, :id) Repo.aggregate(from(u in User), :count, :id)

View file

@ -4,9 +4,24 @@ defmodule NullaWeb.AuthController do
alias Nulla.Models.Actor alias Nulla.Models.Actor
alias Nulla.Models.InstanceSettings alias Nulla.Models.InstanceSettings
def sign_in(conn, _params) do def sign_in(conn, %{"email" => email, "password" => password}) do
conn user = User.get_user(email: email)
|> redirect(to: "/")
if user do
if Argon2.verify_pass(password, user.password) do
conn
|> put_session(:user_id, user.id)
|> redirect(to: "/")
else
conn
|> put_flash(:error, "Invalid login or password.")
|> redirect(to: ~p"/auth/sign_in")
end
else
conn
|> put_flash(:error, "User not exist.")
|> redirect(to: ~p"/auth/sign_in")
end
end end
def sign_out(conn, _params) do def sign_out(conn, _params) do
@ -18,6 +33,11 @@ defmodule NullaWeb.AuthController do
def sign_up(conn, %{"username" => username, "email" => email, "password" => password}) do def sign_up(conn, %{"username" => username, "email" => email, "password" => password}) do
instance_settings = InstanceSettings.get_instance_settings!() instance_settings = InstanceSettings.get_instance_settings!()
if not instance_settings.registration do
redirect(conn, to: "/")
end
domain = instance_settings.domain domain = instance_settings.domain
hashed_password = Argon2.hash_pwd_salt(password) hashed_password = Argon2.hash_pwd_salt(password)