Hello,
I’ve created a SessionController and when I’m trying to log in using wrong credential I get an error:
session_controller.ex
defmodule MdbmsWeb.SessionController do
use MdbmsWeb, :controller
import MdbmsWeb.Auth
def new(conn, _params) do
render(conn, "new.html")
end
def create(conn, %{"session" => %{"email" => email, "password" => password}}) do
case login_with(conn, email, password, repo: Repo) do
{:ok, conn} ->
logged_user = Guardian.Plug.current_resource(conn)
conn
|> put_flash(:info, "logged in!")
|> redirect(to: page_path(conn, :index))
{:error, _reason, conn} ->
conn
|> put_flash(:error, "Wrong username/password")
|> render("new.html")
end
end
end
auth.ex
defmodule MdbmsWeb.Auth do
import Comeonin.Pbkdf2, only: [checkpw: 2, dummy_checkpw: 0]
import Plug.Conn
defp login(conn, user) do
conn
|> Guardian.Plug.sign_in(user, :access)
end
def login_with(conn, email, pass, opts) do
repo = Keyword.fetch!(opts, :repo)
user = repo.get_by(Mdbms.User, email: email)
cond do
user && checkpw(pass, user.password) ->
{:ok, login(conn, user)}
user ->
{:error, :unauthorized, conn}
true ->
dummy_checkpw()
{:error, :not_found, conn}
end
end
end
I spent hours looking for the mistake and I have no idea what I did wrong and where.