mirror of
https://github.com/ClaperCo/Claper.git
synced 2025-12-16 11:57:58 +01:00
72 lines
2.2 KiB
Elixir
72 lines
2.2 KiB
Elixir
defmodule ClaperWeb.UserSessionController do
|
|
use ClaperWeb, :controller
|
|
|
|
alias Claper.Accounts
|
|
alias ClaperWeb.UserAuth
|
|
|
|
def new(conn, _params) do
|
|
oidc_auto_redirect_login = Application.get_env(:claper, :oidc)[:auto_redirect_login]
|
|
|
|
conn
|
|
|> redirect_to_login(oidc_auto_redirect_login)
|
|
end
|
|
|
|
defp redirect_to_login(conn, true) do
|
|
conn |> redirect(to: "/users/oidc")
|
|
end
|
|
|
|
defp redirect_to_login(conn, false) do
|
|
oidc_provider_name = Application.get_env(:claper, :oidc)[:provider_name]
|
|
oidc_logo_url = Application.get_env(:claper, :oidc)[:logo_url]
|
|
oidc_enabled = Application.get_env(:claper, :oidc)[:enabled]
|
|
|
|
conn
|
|
|> render("new.html",
|
|
error_message: nil,
|
|
oidc_provider_name: oidc_provider_name,
|
|
oidc_logo_url: oidc_logo_url,
|
|
oidc_enabled: oidc_enabled
|
|
)
|
|
end
|
|
|
|
# def create(conn, %{"user" => %{"email" => email}} = _user_params) do
|
|
# Accounts.deliver_magic_link(email, &url(~p"/users/magic/#{&1}"))
|
|
|
|
# conn
|
|
# |> redirect(to: ~p"/users/register/confirm?#{[%{email: email}]}")
|
|
# end
|
|
def create(conn, %{"user" => user_params}) do
|
|
%{"email" => email, "password" => password} = user_params
|
|
|
|
oidc_provider_name = Application.get_env(:claper, :oidc)[:provider_name]
|
|
oidc_logo_url = Application.get_env(:claper, :oidc)[:logo_url]
|
|
oidc_enabled = Application.get_env(:claper, :oidc)[:enabled]
|
|
|
|
if user = Accounts.get_user_by_email_and_password(email, password) do
|
|
if Application.get_env(:claper, :email_confirmation) and !user.confirmed_at do
|
|
render(conn, "new.html",
|
|
error_message:
|
|
"You need to confirm your account before logging in. Please check your email for confirmation instructions.",
|
|
oidc_provider_name: oidc_provider_name,
|
|
oidc_logo_url: oidc_logo_url,
|
|
oidc_enabled: oidc_enabled
|
|
)
|
|
else
|
|
UserAuth.log_in_user(conn, user, user_params)
|
|
end
|
|
else
|
|
render(conn, "new.html",
|
|
error_message: "Invalid email or password",
|
|
oidc_provider_name: oidc_provider_name,
|
|
oidc_logo_url: oidc_logo_url,
|
|
oidc_enabled: oidc_enabled
|
|
)
|
|
end
|
|
end
|
|
|
|
def delete(conn, _params) do
|
|
conn
|
|
|> UserAuth.log_out_user()
|
|
end
|
|
end
|