|
defmodule MedicodeWeb.UserSessionController do |
|
use MedicodeWeb, :controller |
|
|
|
alias Medicode.Accounts |
|
alias MedicodeWeb.UserAuth |
|
|
|
def create(conn, %{"_action" => "registered"} = params) do |
|
create(conn, params, "Account created successfully!") |
|
end |
|
|
|
def create(conn, %{"_action" => "password_updated"} = params) do |
|
conn |
|
|> put_session(:user_return_to, ~p"/users/settings") |
|
|> create(params, "Password updated successfully!") |
|
end |
|
|
|
def create(conn, params) do |
|
create(conn, params, "Welcome back!") |
|
end |
|
|
|
defp create(conn, %{"user" => user_params}, info) do |
|
%{"email" => email, "password" => password} = user_params |
|
|
|
if user = Accounts.get_user_by_email_and_password(email, password) do |
|
conn |
|
|> put_flash(:info, info) |
|
|> UserAuth.log_in_user(user, user_params) |
|
else |
|
|
|
conn |
|
|> put_flash(:error, "Invalid email or password") |
|
|> put_flash(:email, String.slice(email, 0, 160)) |
|
|> redirect(to: ~p"/users/log_in") |
|
end |
|
end |
|
|
|
def delete(conn, _params) do |
|
conn |
|
|> put_flash(:info, "Logged out successfully.") |
|
|> UserAuth.log_out_user() |
|
end |
|
end |
|
|