From 987d32398b27e9500fd4e4f9de057e01c0d952cb Mon Sep 17 00:00:00 2001 From: miraikumiko Date: Sat, 21 Jun 2025 14:31:37 +0200 Subject: [PATCH] Update sign_in --- lib/nulla/models/user.ex | 4 ++- lib/nulla_web/controllers/auth_controller.ex | 26 +++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/lib/nulla/models/user.ex b/lib/nulla/models/user.ex index 29f3a8e..4bb596e 100644 --- a/lib/nulla/models/user.ex +++ b/lib/nulla/models/user.ex @@ -43,7 +43,9 @@ defmodule Nulla.Models.User do |> Repo.insert() 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 Repo.aggregate(from(u in User), :count, :id) diff --git a/lib/nulla_web/controllers/auth_controller.ex b/lib/nulla_web/controllers/auth_controller.ex index 5755775..52748e4 100644 --- a/lib/nulla_web/controllers/auth_controller.ex +++ b/lib/nulla_web/controllers/auth_controller.ex @@ -4,9 +4,24 @@ defmodule NullaWeb.AuthController do alias Nulla.Models.Actor alias Nulla.Models.InstanceSettings - def sign_in(conn, _params) do - conn - |> redirect(to: "/") + def sign_in(conn, %{"email" => email, "password" => password}) do + user = User.get_user(email: email) + + 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 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 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)