Files
vishnya/lib/vishnya_web/controllers/auth_controller.ex

39 lines
1.1 KiB
Elixir

defmodule VishnyaWeb.AuthController do
use VishnyaWeb, :controller
alias Vishnya.Accounts
def authenticate_user(conn, %{"username" => username, "password" => password} = params) do
remember = Map.get(params, "remember") == "on"
IO.inspect(remember)
case Accounts.authenticate_user(username, password) do
{:ok, user} ->
conn
|> put_flash(:info, "Signed in successfully!")
|> put_resp_cookie("auth_token", user.token, max_age: if(remember, do: 60 * 60 * 24 * 30, else: nil))
|> redirect(to: "/dashboard")
:error ->
conn
|> put_flash(:error, "Invalid username or password.")
|> redirect(to: "/sign_in")
end
end
def authenticate_user(conn, %{"token" => token}) do
case Accounts.authenticate_user(token) do
nil ->
conn
|> put_flash(:error, "Invalid session token.")
|> redirect(to: "/sign_in")
user ->
conn
|> put_flash(:info, "Loaded session token.")
|> put_resp_cookie("auth_token", user.token, max_age: 60 * 60 * 24 * 30)
|> redirect(to: "/dashboard")
end
end
end